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;


        }` 

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

私はこれらの問題なしに暗号化と復号化を達成するためにクラスを検索します。これらの問題を回避してより安全にするためにこのクラスに変更または拡張がある場合、それは素晴らしいでしょう。

その安定性を確認するために長期間テストされ使用されている他のクラスがある場合、それは素晴らしいでしょう。

4

2 に答える 2

2

そのコードは、パスワードとして十分ではありません。

リンク先のコーディングホラー記事からジェフの言葉を引用させてください。

ユーザーのパスワードは絶対に保存しないでくださいその場合、パスワードを正しく保存していません。常にパスワードのソルト ハッシュを保存します。パスワード自体は決して保存しないでください。それはとても簡単で、メンサーのメンバーでさえ.. 理解できません..

パスワードは、取得できる方法で保存しないでください。暗号化しても問題ありません。暗号化は双方向のプロセスです。元のパスワードを回復できない一方向の変換を行う必要があります。Jeff が示唆するように、saltでハッシュを使用します。パスワードを検証するには、同じ一方向プロセスを入力に適用し、保存した値と比較します。入力と比較するために保存されたパスワードを回復することはありません。

于 2011-01-04T12:36:12.837 に答える
1

System.Security.Cryptography 名前空間を見ると、.NET フレームワークには多くのオプションが用意されています。

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

于 2011-01-04T12:22:58.103 に答える