22,209
社区成员
发帖
与我相关
我的任务
分享
消息 15581,级别 16,状态 3,过程 ******_GetByUser,第 9 行
在执行此操作之前,请在数据库中创建一个主密钥或在会话中打开该主密钥。
消息 15315,级别 16,状态 1,过程 ******_GetByUser,第 27 行
密钥 'BIEncryptionKey1' 未打开。请先打开它,然后再使用它。
--1.1创建非对称密钥
create asymmetric key asymSymkey
with algorithm = RSA_512
ENCRYPTION BY PASSWORD ='12345ABCDE'
/*====================================================
对称密钥可以使用的加密算法包括:
des,desx,triple_des,triple_des_3key,
rc2,rc4,
aes_128,aes_192,aes_256
需要用:非对称密钥、其他对称密钥、证书、密码 来加密对称密钥
======================================================*/
--1.2创建对称密钥,这里用非对称密钥来加密对称密钥
CREATE symmetric key symKey
with algorithm = triple_des
encryption by asymmetric key asymSymKey
--2.查看对称密钥
select name,
symmetric_key_id,
key_length,
algorithm_desc
from sys.symmetric_keys
--3.修改对称密钥加密方式,原来是用非对称密钥来加密的,现在改为用密码加密
--3.1打开对称密钥
open symmetric key symKey
decryption by asymmetric key asymSymkey
with password = '12345ABCDE' --这儿的解密密码是非对称密钥的私钥的加密密码
--先用这个密码解密,取得私钥
--然后用这个私钥解密,取得对称密钥
--3.2先增加密码
alter symmetric key symKey
add encryption by password = 'ABCDE12345'
--3.3再删除非对称密钥加密,如果先删除非对称密钥加密,
--会报错:无法删除 非对称密钥'asymSymKey'所创建的加密
alter symmetric key symKey
drop encryption by asymmetric key asymSymKey
close symmetric key symKey
--4.用对称密钥加密
create table ttt
(id int not null primary key,
Question varchar(300) not null,
Answer varbinary(200) not null
)
--4.1先打开对称密钥
open symmetric key symKey
decryption by password = 'ABCDE12345'
--4.2添加数据
insert into ttt
values(1,
'what is your name?',
ENCRYPTBYKEY(key_guid('symKey'), --对称密钥的guid
'abcdefg' --需要加密的文本
)
)
--4.3关闭对称密钥
close symmetric key symKey
--5.用对称密钥解密
--5.1先打开对称密钥
open symmetric key symKey
decryption by password = 'ABCDE12345'
--5.2显示解密数据
select ttt.id,
ttt.Question,
ttt.Answer,
cast(DECRYPTBYKEY(Answer) as varchar(200)) --解密函数不需要对称密钥的guid
from ttt
--5.3关闭对称密钥
close symmetric key symKey
--6.删除对称密钥
drop symmetric key symKey