ada*_*101 6 sql-server encryption cryptography sql-server-2008
我们希望使用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>
Run Code Online (Sandbox Code Playgroud)
我尝试在一台服务器上创建主密钥,证书和对称密钥,然后在另一台服务器上恢复它,这似乎不会创建密钥,因此也不起作用.
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>)
Run Code Online (Sandbox Code Playgroud)
如何在一个SQL Server上加密并在另一个SQL Server上解密?