SQL Server 2005对数据进行加密
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://www.cnblogs.com/jintan/archive/2008/03/01/1087070.html
SQL Server 2005内置加密功能
密钥管理是加密安全框架中最重要的环节。SQL Server 2005 支持三种加密类型。每种类型使用一种不同的密钥,并且具有多个加密算法和密钥强度,如下所述:
• |
对称加密:SQL Server 2005 支持 RC4、RC2、DES 和 AES 系列加密算法。 |
• |
非对称加密:SQL Server 2005 支持 RSA 加密算法以及 512 位、1,024 位和 2,048 位的密钥强度。 |
• |
证书:使用证书是非对称加密的另一种形式。但是,一个组织可以使用证书并通过数字签名将一组公钥和私钥与其拥有者相关联。SQL Server 2005 支持“因特网工程工作组”(IETF) X.509 版本 3 (X.509v3) 规范。一个组织可以对 SQL Server 2005 使用外部生成的证书,或者可以使用 SQL Server 2005 生成证书。 |
使用 EncryptByKey() 函数或 DecryptByKey() 函数将含有敏感数据的列中的数据加密或解密。
示例:
--作者:代码乱了(靳如坦) http://jintan.cnblogs.com
--创建一个对称加密的密钥,使用DES
CREATE SYMMETRIC KEY SSN_Key_01
WITH ALGORITHM = DES
ENCRYPTION BY PASSWORD = 'password'
--打开密钥SSN_Key_01
OPEN SYMMETRIC KEY SSN_Key_01
DECRYPTION BY PASSWORD = 'password'
--加密数据'123433534534534'
DECLARE @encryptStr VARBINARY(500)
SELECT @encryptStr=EncryptByKey(Key_GUID('SSN_Key_01'), '123433534534534')
SELECT @encryptStr
--解密刚刚加密的数据,结果应该是'123433534534534'
SELECT convert ( VARCHAR, decryptbykey (@encryptStr) )
使用证书的情况类似,先创建证书,--创建一个对称加密的密钥,使用DES
CREATE SYMMETRIC KEY SSN_Key_01
WITH ALGORITHM = DES
ENCRYPTION BY PASSWORD = 'password'
--打开密钥SSN_Key_01
OPEN SYMMETRIC KEY SSN_Key_01
DECRYPTION BY PASSWORD = 'password'
--加密数据'123433534534534'
DECLARE @encryptStr VARBINARY(500)
SELECT @encryptStr=EncryptByKey(Key_GUID('SSN_Key_01'), '123433534534534')
SELECT @encryptStr
--解密刚刚加密的数据,结果应该是'123433534534534'
SELECT convert ( VARCHAR, decryptbykey (@encryptStr) )
然后利用证书:创建一个密钥、打开密钥、加密、解密