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