隔牆有耳之資料在存儲的時候對資料加密
下面來介紹一下,資料在存儲的時候對資料加密。
我們先來采用證書來對資料加密,指令如下:
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)呢?
因為在加密以後我們不知道它是具有多少位的字元串,是以我們要用最大值的。
<a href="http://liuyonglei.blog.51cto.com/attachment/200906/29/501877_1246289594PsaU.jpg"></a>
在上篇博文中沒有介紹關于非對稱的一些東西,現在就來看一下非對稱密鑰的介紹
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這個指令如圖:
<a href="http://liuyonglei.blog.51cto.com/attachment/200906/29/501877_1246289598s9xw.jpg"></a>
<a href="http://liuyonglei.blog.51cto.com/attachment/200906/29/501877_1246289602vFOK.jpg"></a>
密鑰寫入完成後,利用這個密鑰來生成非對稱密鑰。
create asymmetric key asy3 from file='c:\bak\lyl.key' encryption by password='Ccjsj1200'
利用密鑰來生成非對稱密鑰
<a href="http://liuyonglei.blog.51cto.com/attachment/200906/29/501877_1246289604Pnq2.jpg"></a>
例子:對yongleihao!!就行加密,顯示加密後的資料并解密。
set @a='yongleihao!!'
set @b=encryptbyasymkey (asymkey_id('asy2'),@a)
select @b
select cast(decryptbyasymkey (asymkey_id('asy2'),@b,N'Ccjsj1200') as varchar(100))
如圖:
<a href="http://liuyonglei.blog.51cto.com/attachment/200906/29/501877_1246289608L5eP.jpg"></a>
<a href="http://liuyonglei.blog.51cto.com/attachment/200906/29/501877_1246289612RIyL.jpg"></a>
資料庫的安全性就介紹到這了,完了。
本文轉自 liuyonglei 51CTO部落格,原文連結:http://blog.51cto.com/liuyonglei/171016,如需轉載請自行聯系原作者