다음을 통해 공유


DECRYPTBYCERT(Transact-SQL)

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

이 함수는 인증서의 프라이빗 키를 사용하여 암호화된 데이터의 암호를 해독합니다.

Transact-SQL 구문 표기 규칙

구문

DecryptByCert ( certificate_ID , { 'ciphertext' | @ciphertext }   
    [ , { 'cert_password' | @cert_password } ] )  

인수

certificate_ID
데이터베이스에 있는 인증서 ID입니다. certificate_IDint 데이터 형식을 갖습니다.

ciphertext
인증서의 공개 키로 암호화된 데이터의 문자열입니다.

@ciphertext
인증서로 암호화된 데이터를 포함하는 varbinary 형식의 변수입니다.

cert_password
인증서의 프라이빗 키를 암호화하는 데 사용되는 암호입니다. cert_password는 유니코드 데이터 형식을 가져야 합니다.

@cert_password
인증서의 프라이빗 키를 암호화하는 데 사용되는 암호를 포함하는 nchar 또는 nvarchar 형식의 변수입니다. @cert_password는 유니코드 데이터 형식을 가져야 합니다.

반환 형식

최대 크기가 8,000바이트인 varbinary입니다.

설명

이 함수는 인증서의 프라이빗 키로 데이터의 암호를 해독합니다. 비대칭 키를 사용하는 암호화 변환에는 상당한 리소스가 사용됩니다. 따라서 개발자는 일상적인 사용자 데이터 암호화/암호 해독에 ENCRYPTBYCERT 및 DECRYPTBYCERT의 사용을 피하는 것이 좋습니다.

사용 권한

DECRYPTBYCERT는 인증서에 대한 CONTROL 권한이 필요합니다.

예제

이 예제는 인증서 JanainaCert02로 원래 암호화된 데이터로 표시되는 [AdventureWorks2022].[ProtectedData04]에서 행을 선택합니다. 예제는 먼저 인증서 pGFD4bb925DGvbd2439587y의 암호로 인증서 JanainaCert02의 프라이빗 키를 암호 해독합니다. 그런 다음, 예제에서는 이 프라이빗 키로 암호 텍스트를 암호 해독합니다. 예제는 암호가 해독된 데이터를 varbinary에서 nvarchar로 변환합니다.

SELECT CONVERT(NVARCHAR(max), DecryptByCert(Cert_Id('JanainaCert02'),  
    ProtectedData, N'pGFD4bb925DGvbd2439587y'))  
FROM [AdventureWorks2022].[ProtectedData04]   
WHERE Description   
    = N'data encrypted by certificate '' JanainaCert02''';  
GO  

참고 항목

ENCRYPTBYCERT(Transact-SQL)
CREATE CERTIFICATE(Transact-SQL)
ALTER CERTIFICATE(Transact-SQL)
DROP CERTIFICATE(Transact-SQL)
BACKUP CERTIFICATE(Transact-SQL)
암호화 계층