從這篇文章:http://www.sql-server-performance.com/articles/dev/encryption_2005_2_p1.aspx
(這順便說一句是第一結果爲谷歌搜索的encrypt data sql server
)
對稱密鑰
對稱密鑰是用於加密和解密的一個密鑰。這是一種快速,常用的加密方法。與證書一樣,創建對稱密鑰時有許多參數可用。在大多數情況下,我們只需要一組有限的參數。您可以參閱聯機叢書以瞭解所有參數。
您可以指定對稱密鑰的加密算法。 DES,TRIPLE_DES,RC2,RC4,DESX,AES_128,AES_192和AES_256是可用於SQL Server數據加密的加密算法。 AES加密算法目前僅在Windows 2003上受支持。如果您使用Windows 2000或Windows XP,則無法從SQL Server訪問AES加密算法。如果您嘗試使用AES加密算法,你會得到一個錯誤:
要麼沒有算法已被指定或位長和鍵指定的算法不可用在此安裝的Windows。
可以使用PASSWORD
,SYMMETRIC KEY
,ASYMMETRIC KEY
或CERTIFICATE
加密對稱密鑰。
的ALTER SYMMETRIC KEY
和DROP SYMMETRIC KEY
命令也可用於改善維修。
創建一個對稱密鑰後,它只是一個使用它的問題。有三種功能可用於對稱密鑰:Key_GUID
,EncryptByKey
和DecryptByKey
。
OPEN SYMMETRIC KEY TestSymKey
DECRYPTION BY CERTIFICATE CertificateTest2;
DECLARE @Encryptvalsym varbinary(MAX)
SET @Encryptvalsym = EncryptByKey(key_guid('TestSymKey'),'scott')
SELECT convert(varchar(max),DecryptByKey(@Encryptvalsym))
使用對稱密鑰之前,你需要通過OPEN SYMMETRIC KEY
命令來打開它。要加密數據,您需要傳遞對稱密鑰的GUID。但是,要解密它,您不必傳遞GUID。相反,您必須使用正確的解密方法和值來打開加密的對稱密鑰。
爲了提高對稱密鑰的安全性,您可以在加密過程中添加認證器。解密過程中必須使用相同的值。
OPEN SYMMETRIC KEY TestSymKey
DECRYPTION BY CERTIFICATE CertificateTest2;
DECLARE @Encryptvalsym1 varbinary(MAX)
SET @Encryptvalsym1 = EncryptByKey(key_guid('TestSymKey'),'scott',1,'SQL Server')
- 解密使用對稱密鑰
SELECT convert(varchar(max),DecryptByKey(@Encryptvalsym1,1,'SQL Server'))
加密函數鏈接很有用。我還發現這個網站有一個特別明顯的例子。 http://coder.amplify.com/2010/05/26/encryptbypassphrase-and-decryptbypassphrase/ – Elliott 2011-05-01 23:52:47