SQL Server 2005 引入原生加密功能,2008 進一步增強。若不想建立憑證、金鑰等物件,可直接使用 通行片語 以使用者提供的密碼加解密資料。PassPhrase 允許空格、長度較長、易記憶,且**不儲存於資料庫中**,sysadmin 也無法直接破解。
ENCRYPTBYPASSPHRASE (passphrase, cleartext [, add_authenticator, authenticator])DECRYPTBYPASSPHRASE (passphrase, ciphertext [, add_authenticator, authenticator])加解密必須使用**完全相同的參數** (含驗證器選項)。
USE DemoDB2008r2; GO
CREATE TABLE #SecretInfo (MySecret varbinary(max) NOT NULL); GO
-- 加密
INSERT #SecretInfo (MySecret)
SELECT EncryptByPassPhrase(
N'My Password Used To Encrypt This String in 2008.',
N'我把公司的服務器數據庫密碼記在那個綠色的小本子上了。'); GO
-- 查看密文
SELECT MySecret FROM #SecretInfo;
-- 0x01000000CCBC800C6B5CECE3F211FB975C2F8B681CC8301DDE74CF783C6A593... GO
-- 解密
SELECT CAST(DecryptByPassPhrase(
N'My Password Used To Encrypt This String in 2008.', MySecret) AS varchar(max))
FROM #SecretInfo; GO
