适用场景:客户要求比较高,要求数据字段必须加密存储的情况。
一、创建密码
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Lfw1984abc@*#9527';
二、创建证书
CREATE CERTIFICATE MyColumnCert
WITH SUBJECT = 'Column Encryption Certificate';
三、创建一个对称密钥,用于实际的数据加密和解密操作。
CREATE SYMMETRIC KEY MySymmetricKey
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE MyColumnCert;
GO
四、创建包含需要加密列的表,并加密该列的数据。
CREATE TABLE YourTable
(
ID INT PRIMARY KEY,
EncryptedColumn VARBINARY(MAX) -- 用于存储加密后的数据
);
五、打开对称密钥&同时新增加密数据
OPEN SYMMETRIC KEY MySymmetricKey
DECRYPTION BY CERTIFICATE MyColumnCert;
GO
INSERT INTO YourTable (ID, EncryptedColumn)
VALUES (1, EncryptByKey(Key_GUID('MySymmetricKey'), 'SensitiveData'));
GO
-- 关闭对称密钥
CLOSE SYMMETRIC KEY MySymmetricKey;
GO
六、打开对称密钥 & 同时查询数据
OPEN SYMMETRIC KEY MySymmetricKey
DECRYPTION BY CERTIFICATE MyColumnCert;
GO
-- 读取并解密数据
SELECT ID, CONVERT(VARCHAR(MAX), DecryptByKey(EncryptedColumn)) AS DecryptedData
FROM YourTable;
GO
-- 关闭对称密钥
CLOSE SYMMETRIC KEY MySymmetricKey;
GO