--1 创建数据库主密钥
use test
GO
CREATE MASTER KEY
ENCRYPTION BY PASSWORD='password123'
GO
--2创建存放加密数据的表
CREATE TABLE dbo.SecTable
(
   ID INT IDENTITY PRIMARY KEY,
   DATA NVARCHAR(100)
)
GO
--3 创建数字证书,数字证书的私钥被数据库主密钥加密
CREATE CERTIFICATE TomCert 
WITH 
  SUBJECT = 'Tom Certificate' ,
  START_DATE = '2010-04-01' ,
  EXPIRY_DATE = '2010-12-01'
GO
--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
--7 使用证书解开对称密钥,解密数据表中的数据,完成后关闭对称密钥
OPEN SYMMETRIC KEY Sym_Tom DECRYPTION BY CERTIFICATE TomCert
SELECT ID,CAST(DecryptByKey(DATA) AS NVARCHAR ) FROM dbo.SecTable

DROP SYMMETRIC KEY Sym_Tom
DROP CERTIFICATE TomCert

  

posted on 2021-08-20 16:07  ygunoil  阅读(540)  评论(0编辑  收藏  举报