DECRYPTBYPASSPHRASE (Transact-SQL)
パスフレーズを使用して暗号化されたデータの暗号化を解除します。
構文
DecryptByPassPhrase ( { 'passphrase' | @passphrase }
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
引数
passphrase
暗号化解除キーを作成するために使用されるパスフレーズを指定します。@passphrase
暗号化解除キーの作成で使用されるパスフレーズを含む、nvarchar、char、varchar、または nchar 型の変数です。'ciphertext'
暗号化を解除する暗号文です。@ciphertext
暗号文を含む、varbinary 型の変数です。最大サイズは 8,000 バイトです。add_authenticator
認証子がプレーン テキストと共に暗号化されているかどうかを示します。認証子が使用されている場合は 1 です。int。@add_authenticator
認証子がプレーン テキストと共に暗号化されているかどうかを示します。認証子が使用されている場合は 1 です。int。authenticator
認証子のデータを指定します。sysname。@authenticator
認証子の派生元のデータを含む変数を指定します。
戻り値の型
varbinary 型 (最大サイズは 8,000 バイト)
説明
この関数を実行するには、権限は必要ありません。
間違ったパスフレーズまたは認証子の情報が使用された場合、NULL が返されます。
パスフレーズは暗号化解除キーの生成に使用され、保存されません。
暗号文が暗号化されたときに認証子が含まれていた場合、暗号化を解除するときにその認証子を提供する必要があります。暗号化を解除するときに提供された認証子の値が、そのデータで暗号化された認証子の値と一致しない場合、暗号化解除は失敗します。
例
次の例では、EncryptByPassPhrase で更新されたレコードの暗号化を解除します。
USE AdventureWorks;
-- Get the pass phrase 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(nvarchar,
DecryptByPassphrase(@PassphraseEnteredByUser, CardNumber_EncryptedbyPassphrase, 1
, CONVERT(varbinary, CreditCardID)))
AS 'Decrypted card number' FROM Sales.CreditCard
WHERE CreditCardID = '3681';
GO