재우니의 블로그

 

 

SQL Server 2017 이상 버전에서는 AES256 키를 사용하는 암호로 데이터를 암호화합니다.

 

 

사용법

EncryptByPassPhrase ( { 'passphrase' | @passphrase }   
    , { 'cleartext' | @cleartext }  
  [ , { add_authenticator | @add_authenticator }  
    , { authenticator | @authenticator } ] )

 

 

샘플 예제

-- 암호화
DECLARE @EncryptionBytes varbinary(max) =  ENCRYPTBYPASSPHRASE('symmetric_key_guid', N'대한민국 짝짝짝',1,'authenticator')
SELECT @EncryptionBytes

-- 복호화
DECLARE @DecryptBytes nvarchar(max) =  DecryptByPassphrase('symmetric_key_guid', @EncryptionBytes, 1 ,'authenticator')
SELECT @DecryptBytes

 

 

암호화 반환값은 최대 크기가 8,000바이트인 바이트열입니다.

 

 

 

C# 으로 복호화 하기

 

https://github.com/krcs/SQLServerCrypto

 

 

암호화 된 값을, 복호화 할때 C# 에서 함수를 2가지 제공하며, Authenticator 필요에 따라 제공합니다.

-- DecryptByPassPhraseWithoutVerification() 함수사용
var ciphertext = "0x0100000038C94F7223E0BA2F772B611857F9D45DAF781607CC77F4A856CF08CC2DB9DF14A0593259CB3A4A2BFEDB485C002CA04B6A98BEB1B47EB107";
var password = "symmetric_key_guid";
var decrypted = SQLServerCryptoMethod.DecryptByPassPhraseWithoutVerification(password, ciphertext);
Console.WriteLine(decrypted);



-- DecryptByPassPhrase() 함수사용
var passphrase = "symmetric_key_guid";
var authenticator = "authenticator";
var ciphertext = "0x02000000E920E0F4BDD60C4151FDE26351A1E6CC6C40DA16BBD1338FD66103F616D86D5A4BD8138821D0D849A320C9A5AEAEB28E50CCAAD8961888AF01D593472EEAA744";
var decrypted = SQLServerCryptoMethod.DecryptByPassPhrase(passphrase, ciphertext, 1, authenticator);
Console.WriteLine(decrypted);

 

 

 

 

참고사이트 

 

https://learn.microsoft.com/en-us/sql/t-sql/functions/encryptbypassphrase-transact-sql?view=sql-server-2017

 

ENCRYPTBYPASSPHRASE (Transact-SQL) - SQL Server

ENCRYPTBYPASSPHRASE (Transact-SQL)

learn.microsoft.com