DECRYPTBYPASSPHRASE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

この関数は、もともとパスフレーズで暗号化されたデータを復号します。

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

passphrase
復号キーの生成に使用されるパスフレーズ。

@passphrase
復号キーの生成に使用されるパスフレーズを含む charncharnvarchar、または varchar 型の変数。

'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 データ型が与えられます。

戻り値の型

最大サイズが 8,000 バイトの varbinary

解説

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)