天天看点

隔墙有耳之数据在存储的时候对数据加密

               隔墙有耳之数据在存储的时候对数据加密

下面来介绍一下,数据在存储的时候对数据加密。

我们先来采用证书来对数据加密,命令如下:

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,如需转载请自行联系原作者