--先创建一个数据库 database
--1.创建数据库主密钥
use database
Create master key
ENCRYPTION by password = 'p@ssw0rd'
--如果是强密码策略的系统需要写成强密码
--2.创建存放加密数据的表
Create table dbo.secTable
(ID int identity primary key,[data] nvarchar(100))
--3.创建数字证书,数字证书的密钥被数据库主密钥加密
use database
Create certificate Tomcert
with
subject = 'Tom Certificate',
expiry_date = '2007-07-13 10:26:30'
--expiry_date的时间要为将来时间,例如现在时刻是10:00 那么就写10:01,这样这个时间就生效了
--运行后的警告
--警告:您创建的证书尚未生效,生效时间为将来时间
--4.创建对称密钥,被用证书对其进行加密
create symmetric key sym_tom
with ALGORITHM = desx encryption by certificate TomCert
--5.使用证书解开对称密钥,将数据使用对称密钥加密后存储于表中,完成后关闭对称密钥
open symmetric key sym_Tom decryption by certificate TomCert
insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM1'))
insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM2'))
insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM3'))
close symmetric key sym_Tom
--6.查看被加密的数据内容
select * from dbo.SecTable
--结果大概这个样子
select id = 1,data = 'ꈀ䁱䘱ꂿ렿啔ᯉ' union all
select id = 2,data = 'ꈀ䁱䘱ꂿ렿啔ᯉ' union all
select id = 3,data = 'ꈀ䁱䘱ꂿ렿啔ᯉ'
--7.使用证书解开对称密钥,解密数据表中的数据,完成后关闭对称密钥
open symmetric key sym_Tom decryption by certificate TomCert
select ID,Cast(DecryptByKey(Data) as nvarchar) as [data] from dbo.secTable
Close SymmetRic key Sym_Tom
--结果这个样子
select id = 1,data = 'TOM1' union all
select id = 2,data = 'TOM2' union all
select id = 3,data = 'TOM3'
--------------------------------------------------------------------------------