如何在一个SQL Server上加密并在另一个SQL Server上解密?

时间:2011-03-09 17:28:42

标签: sql-server sql-server-2008 encryption cryptography

我们希望使用SQL Server加密来加密数据库中的几列。我们还需要在生产和测试环境之间传输数据。似乎最好的解决方案是在生产和测试服务器上使用相同的主密钥,证书和对称密钥,以便我可以在生产或测试环境中加密或解密具有相同结果的列。

到目前为止,我尝试在两个不起作用的环境中使用相同的创建脚本。它在一台服务器上加密,但在数据传输到另一台服务器后没有在另一台服务器上解密:

use <database name>
CREATE MASTER KEY ENCRYPTION BY 
   PASSWORD = <password1>

use <database name>
CREATE CERTIFICATE <certificate name>
   WITH SUBJECT = <certificate subject>

use <database name>
CREATE SYMMETRIC KEY <key name>
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE <certificate name>

我尝试在一台服务器上创建主密钥,证书和对称密钥,然后将其恢复到另一台似乎创建密钥的另一台服务器上,因此无法正常工作

use <database name>
OPEN MASTER KEY DECRYPTION BY PASSWORD = <password1>
BACKUP MASTER KEY TO FILE = 'c:\masterkey.txt' 
    ENCRYPTION BY PASSWORD = <password2>

use <database name>
BACKUP CERTIFICATE <certificate name> TO FILE = 'c:\Cert.txt'
    WITH PRIVATE KEY ( FILE = 'c:\Key.txt' , 
    ENCRYPTION BY PASSWORD = <password3> )

use <database name>
RESTORE MASTER KEY 
    FROM FILE = 'c:\masterkey.txt' 
    DECRYPTION BY PASSWORD = <password2>
    ENCRYPTION BY PASSWORD = <password1>

use <database name>
OPEN MASTER KEY DECRYPTION BY PASSWORD = <password1>
CREATE CERTIFICATE <certificate name>
    FROM FILE = 'c:\Cert.txt'
    WITH PRIVATE KEY (FILE = 'c:\Key.txt', 
    DECRYPTION BY PASSWORD = <password3>)  

如何在一台SQL Server上加密并在另一台SQL Server上解密?

1 个答案:

答案 0 :(得分:5)

我们发现,在第一台服务器上加密时,您可以创建指定密钥来源和身份值的对称密钥。然后,当在另一台服务器上解密时,在创建 对称密钥时指定相同的密钥源和标识值。