Q:
文字列を暗号化および復号化するためのクラスがあるかどうかを尋ねたいのですが、ネットを検索すると、いくつか見つかりましたが、安全性が低いか、プロセスの完了に問題があります。
私が以前に見つけたクラスの1つは:
public static string Encrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] byteArray = Encoding.UTF8.GetBytes(text);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
catch (Exception ex)
{
string message = ex.Message;
}
return string.Empty;
}
public static string Decrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] byteArray = Convert.FromBase64String(text);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,
des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();
return Encoding.UTF8.GetString(memoryStream.ToArray());
}
catch (Exception ex)
{
string message = ex.Message;
}`
このクラスに関するコメントのいくつかは次のとおりです。
Encoding.UTF8.GetBytesは、パスワードからキーを取得するための非常に不適切で安全でない方法です。
http://www.codinghorror.com/blog/2010/12/the-dirty-truth-about-web-passwords.html
- その他の問題
私はこれらの問題なしに暗号化と復号化を達成するためにクラスを検索します。これらの問題を回避してより安全にするためにこのクラスに変更または拡張がある場合、それは素晴らしいでしょう。
その安定性を確認するために長期間テストされ使用されている他のクラスがある場合、それは素晴らしいでしょう。