DECRYPTBYPASSPHRASE (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

此函式會將原本以複雜密碼加密的資料解密。

Transact-SQL 語法慣例

Syntax

DecryptByPassPhrase ( { 'passphrase' | @passphrase }   
    , { 'ciphertext' | @ciphertext }  
  [ , { add_authenticator | @add_authenticator }  
    , { authenticator | @authenticator } ] )  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

passphrase
用來產生解密金鑰的複雜密碼。

@passphrase
charncharnvarcharvarchar 類型的變數,包含用來產生解密金鑰的複雜密碼。

'ciphertext'
以金鑰加密的資料字串。 ciphertext 具有 varbinary 資料類型。

@ciphertext
varbinary 類型的變數,其中包含以金鑰加密的資料。 @ciphertext 變數的大小上限為 8,000 個位元組。

add_authenticator
指出原始加密程序是否隨純文字一同包含及加密驗證器。 如果加密程序使用驗證器,則 add_authenticator 的值為 1。 add_authenticator 具有 int 資料類型。

@add_authenticator
指出原始加密程序是否隨純文字一同包含及加密驗證器的變數。 如果加密處理序使用驗證器,則 @add_authenticator 的值為 1。 @add_authenticator 具有 int 資料類型。

authenticator
作為驗證器產生基礎使用的資料。 authenticator 具有 sysname 資料類型。

@authenticator
變數,其中包含作為驗證器產生基礎使用的資料。 @authenticator 具有 sysname 資料類型。

傳回型別

varbinary,大小上限為 8,000 個位元組。

備註

執行 DECRYPTBYPASSPHRASE 不需要任何權限。 如果收到錯誤的複雜密碼或錯誤的驗證器資訊,則 DECRYPTBYPASSPHRASE 會傳回 NULL。

DECRYPTBYPASSPHRASE 使用複雜密碼來產生解密金鑰。 此解密金鑰不會保存。

如果對加密文字進行加密時包含了驗證器,DECRYPTBYPASSPHRASE 必須收到該相同的驗證器以用於解密程序。 如果提供給解密程序的驗證器值不符合原本用來加密的驗證器值,DECRYPTBYPASSPHRASE 作業會失敗。

範例

此範例會將 EncryptByPassPhrase 中更新的記錄解密。

USE AdventureWorks2022;  
-- Get the passphrase from the user.  
DECLARE @PassphraseEnteredByUser NVARCHAR(128);  
SET @PassphraseEnteredByUser   
= 'A little learning is a dangerous thing!';  
  
-- Decrypt the encrypted record.  
SELECT CardNumber, CardNumber_EncryptedbyPassphrase   
    AS 'Encrypted card number', CONVERT(varchar,  
    DecryptByPassphrase(@PassphraseEnteredByUser, CardNumber_EncryptedbyPassphrase, 1   
    , CONVERT(varbinary, CreditCardID)))  
    AS 'Decrypted card number' FROM Sales.CreditCard   
    WHERE CreditCardID = '3681';  
GO  

另請參閱

選擇加密演算法
ENCRYPTBYPASSPHRASE (Transact-SQL)