1 --创建数据库主秘钥
 2  2 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'pwd'
 3  3 ==> pwd是用户自己设置的密码
 4  4 
 5  5 --创建证书
 6  6 CREATE CERTIFICATE TestCertName WITH SUBJECT='subject'
 7  7 ==> TestCertName是证书名称, subject是用户自己设置的主题名称
 8  8 
 9  9 --证书加密对称秘钥
10 10 CREATE SYMMETRIC KEY TestSymmetricName WITH ALGORITHM=AES_256 ENCRYPTION BY CERTIFICATE TestCertName
11 11 ==》TestSymmetricName 是对称秘钥名称,TestCertName是证书名称
12 12 
13 13 --创建测试表
14 14 CREATE TABLE Test(name VARBINARY(MAX))
15 15 
16 16 --打开之前创建的由证书加密的对称秘钥(加在SQL语句之前)
17 17 OPEN SYMMETRIC KEY TestSymmetricName DECRYPTION BY CERTIFICATE TestCertName
18 18 ==>TestSymmetricName 是对称秘钥名称,TestCertName是证书名称
19 19 
20 20 --字段加密(比如加密name 类型一定是 varbinary(500))
21 21 INSERT INTO Test VALUES( ENCRYPTBYKEY(KEY_GUID(N'TestSymmetricName'),'test data'))
22 22 ==>TestSymmetricName 是对称秘钥名称,name 是要被加密的字段
23 23 ==>ENCRYPTBYKEY 是对字段加密
24 24 
25 25 --字段解密
26 26 SELECT CAST(DECRYPTBYKEY(name) AS VARCHAR(100)) name FROM Test
27 27 ==>Test是数据库表名称,name 是要被解密的字段
28 28 ==>DECRYPTBYKEY是对字段解密
29 29 
30 30 --结束(加在 sql 语句之后)
31 31 CLOSE SYMMETRIC KEY TestSymmetricName
32 32 ==>TestSymmetricName 是对称秘钥名称
33 33 
34 34 
35 35 --查看证书名称
36 36 SELECT * FROM sys.certificates
37 37 
38 38 
39 39 --查看对称秘钥名称
40 40 SELECT * FROM sys.symmetric_keys

 

posted on 2024-01-09 15:25  风扬剪影  阅读(45)  评论(0编辑  收藏  举报