隔牆有耳之數據在存儲的時候對數據加密
下面來介紹一下,數據在存儲的時候對數據加密。
咱們先來採用證書來對數據加密,命令以下:
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))
如圖:
數據庫的安全性就介紹到這了,完了。