隔墙有耳之数据在存储的时候对数据加密
下面来介绍一下,数据在存储的时候对数据加密。
我们先来采用证书来对数据加密,命令如下:
declare @a varchar(100),@b varbinary(max)
set @a='yonglei hao!!'加密内容
set @b=encryptbycert (cert_id ('cer2'),@a)
然后输入
select cast(decryptbyasymkey (cert_id('asy2'),@b,N'Ccjsj1200') as varchar(100))
可以把我们解密的内容以明文方式显示出来
在上面我们为什么要用varbinary(max)呢?
因为在加密以后我们不知道它是具有多少位的字符串,所以我们要用最大值的。
在上篇博文中没有介绍关于非对称的一些东西,现在就来看一下非对称密钥的介绍
create asymmetric key asy1 with algorithm=RSA_2048
创建非对称密钥
create asymmetric key asy2 with algorithm=RSA_2048 Encryption by password='Ccjsj1200'
select * from sys.asymmetric_keys
采用口令创建非对称密钥
alter asymmetric key asy2 with private key (decryption by password='Ccjsj1200',encryption by password='Ccjsj1200')
修改密钥的口令,这种方法是不能采用备份的,下面采用另外一种方法创建。
用sn.exe –k这个命令如图:
密钥写入完成后,利用这个密钥来生成非对称密钥。
create asymmetric key asy3 from file='c:\bak\lyl.key' encryption by password='Ccjsj1200'
利用密钥来生成非对称密钥
例子:对yongleihao!!就行加密,显示加密后的数据并解密。
declare @a varchar(100),@b varbinary(max)
set @a='yongleihao!!'
set @b=encryptbyasymkey (asymkey_id('asy2'),@a)
select @b
select cast(decryptbyasymkey (asymkey_id('asy2'),@b,N'Ccjsj1200') as varchar(100))
如图:
数据库的安全性就介绍到这了,完了。
本文转自 liuyonglei 51CTO博客,原文链接:http://blog.51cto.com/liuyonglei/171016,如需转载请自行联系原作者