数据库密钥问题

menghuanchiyue 2014-03-22 11:44:45

消息 15581,级别 16,状态 3,过程 ******_GetByUser,第 9 行
在执行此操作之前,请在数据库中创建一个主密钥或在会话中打开该主密钥。
消息 15315,级别 16,状态 1,过程 ******_GetByUser,第 27 行
密钥 'BIEncryptionKey1' 未打开。请先打开它,然后再使用它。

使用存储过程的时候就报这个错误
请问怎么解决
...全文
461 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2014-03-22
  • 打赏
  • 举报
回复
下面是一个例子: --3.1打开对称密钥 open symmetric key symKey decryption by asymmetric key asymSymkey with password = '12345ABCDE' --这儿的解密密码是非对称密钥的私钥的加密密码 --先用这个密码解密,取得私钥 --然后用这个私钥解密,取得对称密钥
--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
LongRui888 2014-03-22
  • 打赏
  • 举报
回复
密钥 'BIEncryptionKey1' 未打开 说明你在存储过程中,没有打开这个BIEncryptionKey1

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧