다음을 통해 공유


DECRYPTBYPASSPHRASE(Transact-SQL)

전달 구로 암호화된 데이터의 암호를 해독합니다.

항목 링크 아이콘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
    인증자가 파생될 데이터를 포함하는 변수입니다.

반환 형식

최대 크기가 8,000바이트인 varbinary

주의

이 함수를 실행하는 데 필요한 사용 권한은 없습니다.

잘못된 전달 구나 인증자 정보를 사용하면 NULL을 반환합니다.

전달 구는 암호 해독 키를 생성하는 데 사용되며 암호 해독 키는 지속형이 아닙니다.

암호화 텍스트를 생성할 때 인증자를 포함한 경우 암호 해독 시 인증자를 제공해야 합니다. 암호 해독 시 제공한 인증자 값이 데이터를 암호화한 인증자 값과 일치하지 않으면 암호 해독이 실패합니다.

다음 예에서는 EncryptByPassPhrase에서 업데이트된 레코드의 암호를 해독합니다.

USE AdventureWorks2008R2;
-- 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