1、测试表
CREATE TABLE TBLUser
(
Name nvarchar(30),
Password varbinary(1000)
)
2、创建数据库主密钥
CREATE master key ENCRYPTION BY PASSWORD ='passW@ord'
此处使用密码"passW@ord"对主密钥进行加密,主密钥用于保护数据库中的其他加密对象,例如对称密钥和证书
3、创建对称密钥
CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'
4、使用对称秘钥加密数据
CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE TestCert
创建了一个TestSymmetric的对称密钥,使用AES_256算法加密,并由名为TestCert的证书进行加密
5、使用对称秘钥加密数据
OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
INSERT INTO TBLUser values('张三', ENCRYPTBYKEY(Key_Guid(N'TestSymmetric'), '123456'));
CLOSE SYMMETRIC KEY TestSymmetric;
用来进行数据加密和解密,该语句使用TestSymmetric的对称密钥和TestCert的证书来加密和解密数据。
具体来说,该语句打开TestSymmetric的对称密钥,并使用TestCert的证书对其进行解密。接着,该语句向TBLUser的表中插入一个名为'张三'的用户,并将其密码'123456'使用TestSymmetric对称密钥进行加密。最后,该语句关闭TestSymmetric的对称密钥
6、查看加密后的数据
SELECT * FROM TBLUser
7、解密数据
OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
SELECT Name, CAST(DecryptByKey(password) as varchar(100)) Password FROM TBLUser;
CLOSE SYMMETRIC KEY TestSymmetric;
使用TestSymmetric的对称密钥和TestCert的证书来解密数据。
具体来说,该语句打开TestSymmetric的对称密钥,并使用TestCert的证书对其进行解密。接着,该语句从TBLUser的表中选择所有用户的名称和密码,并将密码使用TestSymmetric对称密钥进行解密,最终以明文形式返回。最后,该语句关闭名为TestSymmetric的对称密钥