C# 언어로 데이터베이스와 연동할 때, 데이터 암호화는 보안을 강화하는 중요한 단계입니다. 이 문서에서는 C#과 데이터베이스를 연동하면서 데이터를 안전하게 암호화하는 방법을 소개하겠습니다.
암호화 라이브러리 사용
C#에서 데이터를 암호화하기 위해서는 System.Security.Cryptography
네임스페이스에 있는 클래스와 메서드를 사용하면 됩니다. 대표적으로 RijndaelManaged
나 AesCryptoServiceProvider
클래스가 있습니다. 이러한 클래스를 사용하여 데이터를 암호화하고 복호화할 수 있습니다.
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class EncryptionHelper
{
private static byte[] _salt = Encoding.ASCII.GetBytes("YourSalt");
public static string Encrypt(string plainText, string passPhrase)
{
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
using (AesCryptoServiceProvider encryptor = new AesCryptoServiceProvider())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(passPhrase, _salt);
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(plainTextBytes, 0, plainTextBytes.Length);
}
plainText = Convert.ToBase64String(ms.ToArray());
}
}
return plainText;
}
public static string Decrypt(string cipherText, string passPhrase)
{
byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
using (AesCryptoServiceProvider decryptor = new AesCryptoServiceProvider())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(passPhrase, _salt);
decryptor.Key = pdb.GetBytes(32);
decryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream(cipherTextBytes))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor.CreateDecryptor(), CryptoStreamMode.Read))
{
using (StreamReader reader = new StreamReader(cs))
{
cipherText = reader.ReadToEnd();
}
}
}
}
return cipherText;
}
}
위의 예제 코드는 AesCryptoServiceProvider
를 이용하여 평문(plain text)을 암호화하고, 그 암호문(cipher text)을 다시 복호화하는 과정을 나타냅니다.
데이터베이스에 암호화된 데이터 저장
암호화된 데이터는 데이터베이스에 저장하기 전에 암호화되어야 합니다. 대부분의 경우, 문자열로 된 데이터를 암호화하여 데이터베이스에 저장합니다. 위의 암호화 코드를 활용하여 데이터를 암호화한 뒤, 데이터베이스에 저장하면 됩니다.
데이터베이스로부터 암호화된 데이터 읽기
데이터베이스로부터 암호화된 데이터를 읽을 때에는 해당 데이터를 복호화하여 사용해야 합니다. 위의 복호화 코드를 사용하여 데이터베이스에서 읽어온 암호문을 복호화하여 원문을 얻을 수 있습니다.
암호화는 데이터베이스와의 연동 시 보안을 높여주는 중요한 요소입니다. C#에서 제공하는 다양한 암호화 기능을 이용하여 데이터베이스와의 연동 시 보안을 강화할 수 있습니다.
위의 내용은 데이터베이스와 C#을 이용한 데이터 암호화에 대한 간략한 소개이며, 실제 적용 시에는 보다 신중한 처리가 필요합니다.
참고 문헌
- Microsoft 문서: https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography?view=net-6.0