在SQL Server2000和以前的版本,是不支持加密的。所有的加密 *** 作都需要在程序中完成。这导致一个问题,数据库中加密的数据仅仅是对某一特定程序有意义,而另外的程序如果没有对应的解密算法,则数据变得毫无意义。
到了SQL Server2005,引入了列级加密。使得加密可以对特定列执行,这个过程涉及4对加密和解密的内置函数
SQL Server 2008时代,则引入的了透明数据加密(TDE),所谓的透明数据加密,就是加密在数据库中进行,但从程序的角度来看就好像没有加密一样,和列级加密不同的是,TDE加密的级别是整个数据库。使用TDE加密的数据库文件或备份在另一个没有证书的实例上是不能附加或恢复的。
ACCESS只是做为一个文件,安全性由文件本身来控制的,但SQL做为大型数据库,本身设计就不是为移动方便而且,所以他的安全性,是由服务器硬件来控制的。这好比,你对保险柜的安全性,是靠保险柜本身来控制的,比如钥匙,铁皮强度,但你的家具,床柜什么的,其安全性是由你家房间,大门来控制的,不能让家具自己来承担安全责任。
但是,你使用某个家且,安全性可由单个家且控制,所以,SQL数据在单独使用时,是通过程序的安全性来控制,SQL物理文件,你不能设置成说你不能附加回到SQL上,不能复制带走,不能从后台SQL中查看数据表。。。
请参考
插入加密数据:1、INSERT
INTO
userdata(username,pasword,encryptedpassword)
2、VALUES
('smith','htims',AES_ENCRYPT('htims','key'))
上面的插入语句有三个字段,“用户名”、“密码”和“加密的密码”。
AES_ENCRYPT()函数需要一个“key”来协助加密,同样,解密也需要它。
从表中查询加密数据
1、SELECT
username,pasword,AES_DECRYPT(encryptedpassword,'key')
2、FROM
userdata.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)