MS SQL 列加密无证书
MS SQL column encryption without certificate
我正在尝试加密 SQL 服务器 table 中的敏感列之一。
我用这个脚本尝试了 AES256 加密,效果很好。
但我不想在我的 SQL 服务器上创建证书或对称密钥,因为以后可能会出现安全问题。
如何在查询中使用单个密码或密钥加密数据?
这种方法的另一个问题是,我只能使用一个主密码
我的加密。
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = '$Passw0rd'
GO
CREATE CERTIFICATE AESEncryptTestCert
WITH SUBJECT = 'AESEncrypt'
GO
CREATE SYMMETRIC KEY AESEncrypt
WITH ALGORITHM = AES_256 ENCRYPTION -- TRIPLE_DES ENCRYPTION
BY CERTIFICATE AESEncryptTestCert;
OPEN SYMMETRIC KEY AESEncrypt DECRYPTION
BY CERTIFICATE AESEncryptTestCert
SELECT ENCRYPTBYKEY(KEY_GUID('AESEncrypt'),'The text to be encrypted');
您可以使用EncryptByPassPhrase and DecryptByPassPhrase,例如:
DECLARE @CypherText varbinary(8000)
DECLARE @ClearText varchar(128) = 'Text to encrypt'
SET @CypherText = EncryptByPassPhrase ('MyP@ssword123', @ClearText)
DECLARE @DecryptedText varchar(128)
SET @DecryptedText = DecryptByPassPhrase('MyP@ssword123', @CypherText)
SELECT @CypherText AS CypherText, @DecryptedText As DecryptedText
编辑:
上面的代码产生以下输出
+----------------------------------------------------------------------------+-----------------+
| CypherText | DecryptedText |
+----------------------------------------------------------------------------+-----------------+
| 0x01000000F1D813F399246484FDA8D7C7D22BFBCF748D3F6033D4E9980FCDC58A387A1A93 | Text to encrypt |
+----------------------------------------------------------------------------+-----------------+
我正在尝试加密 SQL 服务器 table 中的敏感列之一。 我用这个脚本尝试了 AES256 加密,效果很好。 但我不想在我的 SQL 服务器上创建证书或对称密钥,因为以后可能会出现安全问题。 如何在查询中使用单个密码或密钥加密数据? 这种方法的另一个问题是,我只能使用一个主密码 我的加密。
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = '$Passw0rd'
GO
CREATE CERTIFICATE AESEncryptTestCert
WITH SUBJECT = 'AESEncrypt'
GO
CREATE SYMMETRIC KEY AESEncrypt
WITH ALGORITHM = AES_256 ENCRYPTION -- TRIPLE_DES ENCRYPTION
BY CERTIFICATE AESEncryptTestCert;
OPEN SYMMETRIC KEY AESEncrypt DECRYPTION
BY CERTIFICATE AESEncryptTestCert
SELECT ENCRYPTBYKEY(KEY_GUID('AESEncrypt'),'The text to be encrypted');
您可以使用EncryptByPassPhrase and DecryptByPassPhrase,例如:
DECLARE @CypherText varbinary(8000)
DECLARE @ClearText varchar(128) = 'Text to encrypt'
SET @CypherText = EncryptByPassPhrase ('MyP@ssword123', @ClearText)
DECLARE @DecryptedText varchar(128)
SET @DecryptedText = DecryptByPassPhrase('MyP@ssword123', @CypherText)
SELECT @CypherText AS CypherText, @DecryptedText As DecryptedText
编辑: 上面的代码产生以下输出
+----------------------------------------------------------------------------+-----------------+
| CypherText | DecryptedText |
+----------------------------------------------------------------------------+-----------------+
| 0x01000000F1D813F399246484FDA8D7C7D22BFBCF748D3F6033D4E9980FCDC58A387A1A93 | Text to encrypt |
+----------------------------------------------------------------------------+-----------------+