首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2008

SQL Server 2008 PassPhrase 加密:無需金鑰管理的簡易資料加解密

     編輯:SQL Server 2008

前言

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

解密結果顯示明文

注意事項

  1. Sysadmin 無法破解:因 PassPhrase 不存於資料庫,即使 sysadmin 取得密文也無法解密 (除非知道片語)。
  2. 片語管理責任自負:遺失片語 = 資料永久無法解密;切勿將片語寫在預存程序、資料表或程式碼中。
  3. 適用場景:臨時性、小量敏感資料加密,或不想管理金鑰階層的簡易需求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved