다음을 통해 공유


DECRYPTBYPASSPHRASE(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

이 함수는 원래 암호를 사용하여 암호화된 데이터를 해독합니다.

Transact-SQL 구문 표기 규칙

구문

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

인수

passphrase
암호 해독 키를 생성하는 데 사용된 암호입니다.

@passphrase
암호 해독 키를 생성하는 데 사용된 암호를 포함하는 char, nchar, nvarchar 또는 varchar 형식의 변수입니다.

'ciphertext'
키로 암호화된 데이터 문자열입니다. ciphertextvarbinary 데이터 형식을 갖습니다.

@ciphertext
키로 암호화된 데이터를 포함하는 varbinary 형식의 변수입니다. @ciphertext 변수의 최대 크기는 8,000바이트입니다.

add_authenticator
원래 암호화 프로세스가 포함되고 암호화된 인증자가 일반 텍스트를 사용하는지 여부를 나타냅니다. add_authenticator는 암호화 프로세스가 인증자를 사용한 경우 1의 값을 갖습니다. add_authenticatorint 데이터 형식을 갖습니다.

@add_authenticator
원래 암호화 프로세스가 포함되고 암호화된 인증자가 일반 텍스트를 사용하는지 여부를 나타내는 변수입니다. @add_authenticator는 암호화 프로세스가 인증자를 사용한 경우 1의 값을 갖습니다. @add_authenticatorint 데이터 형식을 갖습니다.

authenticator
인증자의 생성에 대한 기준으로 사용되는 데이터입니다. authenticatorsysname 데이터 형식을 갖습니다.

@authenticator
인증자의 생성에 대한 기준으로 사용된 데이터를 포함하는 변수입니다. @authenticatorsysname 데이터 형식을 갖습니다.

반환 형식

최대 크기가 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)