2011-01-04 15 views
1

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; 


     }` 

このクラスについてのコメントのいくつかは次のとおりです。

それらを避けるために、このクラスへの修正や機能拡張がある場合、私は,,これらの問題もなく、暗号化と復号化を達成するために、クラスについて検索問題を解決し、より安全なものにすることは素晴らしいことです。あなたはSystem.Security.Cryptography名前空間を見ている可能性が

+1

いいえ、このクラスは十分な安全性があります。何かのために(読み:it SUCKS)。まさにあなたは何から保護したいのですか?パスワード?または、他の何か?また、 "他の問題"を避けたいのですか?そして好奇心から、Encoding.UTF8.GetBytesの何が問題になっていますか? –

+0

Proのヒント: 'using'ステートメントを使用してください。 –

+0

私はそれをパスワードで1回2回使用し、文字列の他の時間は問合せ文字列から来ます。最大の問題の1つが無効です。64文字配列の例外です。暗号化の前に暗号化と解読の前に解読すると思います。しかし、将来の問題を恐れている私はこのクラスを使用した後、私はそれを読んで –

答えて

2

あなたは、いけ史上ストアのユーザーパスワード:

は私があなたに連結されたコードホラー記事からジェフの言葉を引用してみましょう。パスワードを保存すると、パスワードが正しく保存されません。パスワードの塩漬けのハッシュを常に保管してください - 決してパスワード自体を保管してください!それは簡単だし、メンサのメンバーでさえ、それを理解することはできない。

パスワードを取得できるように保存しないでください。あなたがそれを暗号化するかどうかは関係ありません。暗号化は双方向のプロセスです。元のパスワードを元の状態に戻すことができない一方向変換を行う必要があります。ジェフの示唆どおり、hashingsaltを使用してください。パスワードを確認するために、同じ一方向プロセスを入力に適用し、保存した値と比較します。 決して入力と比較するために保存されたパスワードを回復します。

+0

...だから私は尋ねる。 –

1

テストし、その安定性を確認するために、長い時間のために使用されている他のクラスが存在する場合、それは素晴らしいことだろう..。 NETフレームワークはたくさんのオプションを提供します。コードは、パスワードのために十分にどこに良好であること

http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx

関連する問題