–不推荐使用非对称密钥对数据加密,但它仍然是一个选择。一旦将非对称密钥加到数据库,就可以用来加密和解密数据。
—
–用到以下两个sql函数:
—
–EncryptByAsymKey 加密数据。(http://technet.microsoft.com/en-us/library/ms186950.aspx)
—
–DecryptByAsymKey解密数据。(http://msdn.microsoft.com/en-us/library/ms189507.aspx)
–注意,在通过证书加密时,DecryptByAsymKey返回的是varbinary类型的加密数据。
—
–下面是一个例子:
use [pratice]
go
–创建需要加密的数据
Create Table BankUser
(PKID int primary key identity(1,1)
,UserNo varbinary(1000) null –一定要用二进制数据类型
,CurState datetime not null
)
go
insert into BankUser
(UserNo,CurState)
VALUES (EncryptByAsymKey(AsymKey_ID(‘asymDemoKey’),’137′),GETDATE())
–插入一条记录,字段UserNo存储了加密的号码值
go
–查看未加密的数据:
SELECT PKID,Curstate,
cast
(DecryptByAsymKey(AsymKey_ID(‘asymDemoKey’),UserNo,N’123′)
as varchar(1000)) as UserNo –需要原始私钥
from BankUser
–示例五、删除非对称密钥
–命令:DROP ASYMMETRIC KEY 删除指定的非对称密钥( http://msdn.microsoft.com/en-us/library/ms188389.aspx)
—
–例子:
DROP ASYMMETRIC KEY asymDemoKey
DROP TABLE [dbo].[BankUser]
–小结:
—
–1、本文主要介绍非对称密钥的创建、删除、查看以及用它来修改私钥、进行数据的加密和解密。
—
–2、非对称密钥包含数据库级的内部公钥和私钥,它可以用来加密和解密SQL Server数据库中的数据。
—
–3、非对称密钥对于数据库加密属于高安全选项,因而需要更多的SQL Server资源,不推荐使用。
—
–下文将主要介绍相对简单的并且广泛应用的对称密钥加密(Symmetric Key Encryption)
—————————————————————————————————–
–SQL Server 2008引入透明数据加密(Transparent Data Encryption),即TDE
–它允许你完全无需修改应用程序代码而对整个数据库加密。
—
–当一个用户数据库可用且已启用TDE时,在写入到磁盘时在页级实现加密。在数据页读入内存时解密。
–如果数据库文件或数据库备份被盗,没有用来加密的原始证书将无法访问。
–这几乎是SQL Server2008安全选项中最激动人心的功能了,有了它,我们至少可以将一些初级的恶意窥视拒之见外。










