加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer对称密钥

发布时间:2020-12-12 14:24:02 所属栏目:MsSql教程 来源:网络整理
导读:1 、建库: Test? ?USE Test; 2 、建 master Key:? ?CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'p@ssw0rd' ; 3 、建表: Person? ?CREATE TABLE Person ?( ?ContactID INT PRIMARY KEY, ?FirstName NVARCHAR(200), ?MiddleName NVARCHAR(200), ?LastName

1、建库:Test?
?USE Test;

2、建master Key:?
?CREATE MASTER KEY ENCRYPTION BY PASSWORD =
'p@ssw0rd';

3、建表:Person?
?CREATE TABLE Person
?(
?ContactID INT PRIMARY KEY,
?FirstName NVARCHAR(200),
?MiddleName NVARCHAR(200),
?LastName NVARCHAR(200),
?eFirstName VARBINARY(200),
?eMiddleName VARBINARY(200),
?eLastName VARBINARY(200),
?);

4、建证书:?
?CREATE CERTIFICATE TestCertificate
?WITH SUBJECT = 'Adventureworks Test Certificate',EXPIRY_DATE = '10/10/2009';

5、建对称key?
?CREATE SYMMETRIC KEY
TestSymmetricKey
?WITH ALGORITHM = TRIPLE_DES
?ENCRYPTION BY CERTIFICATE
TestCertificate;
?OPEN SYMMETRIC KEY TestSymmetricKey
?DECRYPTION BY CERTIFICATE TestCertificate;

6、向表Person中插入加密的数据?
?INSERT
?INTO Person (ContactID,eFirstName,eMiddleName,eLastName)
?values(1,
?
EncryptByKey(Key_GUID('TestSymmetricKey'),'eFirstName'),
?EncryptByKey(Key_GUID('TestSymmetricKey'),'eMiddleName'),'eLastName')
?)

7、解密6中的数据?
?UPDATE Person
?SET FirstName = CONVERT(varchar,
DecryptByKey(eFirstName)),
?MiddleName = CONVERT(varchar,DecryptByKey(eMiddleName)),
?LastName = CONVERT(varchar,DecryptByKey(eLastName));

8、查看解密后的结果?
?select Cast(DecryptByKey(eFirstName) as
Varchar) FROM Person

9、删除以上的结构?
?DROP TABLE Person;
?CLOSE SYMMETRIC KEY TestSymmetricKey;
?DROP SYMMETRIC KEY TestSymmetricKey;
?DROP CERTIFICATE TestCertificate;
?DROP MASTER KEY;

PS:EXPIRY_DATE是有效时间,要大于当前时间

解密时的数据类型要和DB中对应字段的类型相同,要不就是乱码哦(千辛万苦找出来的)

?

?? 如何在保护调用者利益的情况下开打密钥:如果可能,尽量用DecryptByKeyAuto语句代替DecryptByKey语句,使用DecryptByKeyAuto不需要显示地将密钥打开,该语句会自动打开密钥(并在解密后关闭密钥,译者注)

?? 尽可能减少打开密钥和关闭密钥之间的代码,减少打开密钥却没有关闭密钥的逻辑错误

?? 确保在代码内进行错误处理,使用TRY/CATCH防止模块过早终止

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读