ENCRYPTBYASYMKEY(Transact-SQL)

적용 대상: 예SQL Server(지원되는 모든 버전) 예Azure SQL Database 예Azure SQL Managed Instance

이 함수는 비대칭 키를 사용하여 데이터를 암호화합니다.

문서 링크 아이콘 Transact-SQL 구문 규칙

구문

EncryptByAsymKey ( Asym_Key_ID , { 'plaintext' | @plaintext } )  

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

asym_key_ID
데이터베이스에 있는 비대칭 키의 ID입니다. asym_key_IDint 데이터 형식을 갖습니다.

일반 텍스트(cleartext)
ENCRYPTBYASYMKEY는 비대칭 키로 암호화할 데이터 문자열입니다. cleartext 에는 다음이 있을 수 있습니다

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

또는

  • varchar

데이터 형식입니다.

@일반 텍스트(plaintext)
ENCRYPTBYASYMKEY는 비대칭 키로 암호화할 값을 보유하는 변수입니다. @일반 텍스트(plaintext) 에는 다음이 있을 수 있습니다.

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

또는

  • varchar

데이터 형식입니다.

반환 형식

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

설명

비대칭 키를 사용하는 암호화 및 암호 해독 작업은 상당한 리소스를 소비하므로 대칭 키 암호화 및 해독 작업과 비교하여 비용이 많이 듭니다. 개발자는 큰 데이터 세트(예: 데이터베이스 테이블에 저장된 사용자 데이터 세트)에서 비대칭 키 암호화 및 암호 해독 작업을 피하는 것이 좋습니다. 대신 개발자는 먼저 강력한 대칭 키로 해당 데이터를 암호화한 다음, 비대칭 키로 해당 대칭 키를 암호화는 것이 좋습니다.

알고리즘에 따라 입력이 특정 바이트 수를 초과할 경우 ENCRYPTBYASYMKEYNULL 을 반환합니다. 특정 제한은 다음과 같습니다.

  • 512비트 RSA 키는 최대 53바이트를 암호화할 수 있습니다.
  • 1024비트 키는 최대 117바이트를 암호화할 수 있습니다.
  • 2048비트 키는 최대 245바이트를 암호화할 수 있습니다.

SQL Server에서 인증서와 비대칭 키는 모두 RSA 키에 대한 래퍼로 사용됩니다.

이 예에서는 @cleartext에 저장된 텍스트를 비대칭 키 JanainaAsymKey02로 암호화합니다. 이 명령문은 암호화된 데이터를 ProtectedData04 테이블에 삽입합니다.

INSERT INTO AdventureWorks2012.Sales.ProtectedData04   
    VALUES( N'Data encrypted by asymmetric key ''JanainaAsymKey02''',  
    EncryptByAsymKey(AsymKey_ID('JanainaAsymKey02'), @cleartext) );  
GO  

참고 항목

DECRYPTBYASYMKEY(Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
암호화 계층