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