[C#] C# 에서 문자열 암호화 / 복호화 하기
private string Key_String = "12345678";
#region String을 byte로 단순 변환
/// <summary>
/// String을 byte[]로 단순 변환
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private byte[] stringToByte(string value)
{
Byte[] buffer = new byte[value.Length];
for (int i = 0; i < value.Length; i++)
{
buffer[i] = Convert.ToByte(value.Substring(i, 1));
}
return buffer;
}
#endregion
#region 실제로 복호화하는 함수
// Decrypt the byte array.
/// <summary>
/// 복호화 주요 함수
/// </summary>
/// <param name="CypherText">해독할 값</param>
/// <param name="key">키 값</param>
/// <returns></returns>
private string Decrypt(byte[] CypherText, SymmetricAlgorithm key)
{
// Create a memory stream to the passed buffer.
MemoryStream ms = new MemoryStream(CypherText);
// Create a CryptoStream using the memory stream and the
// CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);
// Create a StreamReader for reading the stream.
StreamReader sr = new StreamReader(encStream);
// Read the stream as a string.
string val = sr.ReadLine();
// Close the streams.
sr.Close();
encStream.Close();
ms.Close();
return val;
}
#endregion
#region 암호화를 수행하는 중요 함수
/// <summary>
/// 암호화를 수행하는 중요 함수
/// </summary>
/// <param name="PlainText"></param>
/// <param name="key"></param>
/// <returns></returns>
// Encrypt the string.
public static byte[] Encrypt(string PlainText, SymmetricAlgorithm key)
{
// Create a memory stream.
MemoryStream ms = new MemoryStream();
// Create a CryptoStream using the memory stream and the
// CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);
// Create a StreamWriter to write a string
// to the stream.
StreamWriter sw = new StreamWriter(encStream);
// Write the plaintext to the stream.
sw.WriteLine(PlainText);
// Close the StreamWriter and CryptoStream.
sw.Close();
encStream.Close();
// Get an array of bytes that represents
// the memory stream.
byte[] buffer = ms.ToArray();
// Close the memory stream.
ms.Close();
// Return the encrypted byte array.
return buffer;
}
#endregion
#region 암호화 호출함수
/// <summary>
/// 실제 암호화 할 때 호출하는 함수
/// </summary>
/// <param name="inputvalue"></param>
/// <returns></returns>
public byte[] Des_Encrypt(string inputvalue)
{
string output;
// Create a new DES key.
DESCryptoServiceProvider key = new DESCryptoServiceProvider();
key.Key = stringToByte(Key_String);
key.IV = stringToByte(Key_String);
// Encrypt a string to a byte array.
byte[] buffer = Encrypt(inputvalue, key);
return buffer;
}
#endregion
#region 복호화 호출 함수 byte[] -> string
/// <summary>
/// 복호화를 위한 호출 함수
/// </summary>
/// <param name="inputvalue"></param>
/// <returns></returns>
public string Des_Dncrypt(byte[] inputvalue)
{
string output;
// Create a new DES key.
DESCryptoServiceProvider key = new DESCryptoServiceProvider();
key.Key = stringToByte(Key_String);
key.IV = stringToByte(Key_String);
// Encrypt a string to a byte array.
output = Decrypt(inputvalue, key);
return output;
}
#endregion
Related