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
- 他の問題
それらを避けるために、このクラスへの修正や機能拡張がある場合、私は,,これらの問題もなく、暗号化と復号化を達成するために、クラスについて検索問題を解決し、より安全なものにすることは素晴らしいことです。あなたはSystem.Security.Cryptography名前空間を見ている可能性が
いいえ、このクラスは十分な安全性があります。何かのために(読み:it SUCKS)。まさにあなたは何から保護したいのですか?パスワード?または、他の何か?また、 "他の問題"を避けたいのですか?そして好奇心から、Encoding.UTF8.GetBytesの何が問題になっていますか? –
Proのヒント: 'using'ステートメントを使用してください。 –
私はそれをパスワードで1回2回使用し、文字列の他の時間は問合せ文字列から来ます。最大の問題の1つが無効です。64文字配列の例外です。暗号化の前に暗号化と解読の前に解読すると思います。しかし、将来の問題を恐れている私はこのクラスを使用した後、私はそれを読んで –