1

以下の関数で暗号化された文字列を復号化するにはどうすればよいですか?

private static byte[] salt = new byte[] { 23, 21, 32, 33, 46, 59, 60, 74 };
private static int iterations = 1000;
private static int cb = 32;

public static string GetEncrypt(string plainText)
{
    Rfc2898DeriveBytes k = new Rfc2898DeriveBytes(plainText, salt, iterations);
    byte[] data = k.GetBytes(cb);
    return Convert.ToBase64String(data);
}
4

1 に答える 1

9

できません。の目的を誤解していRfc2898DeriveBytesます。これは、可逆的な暗号化アルゴリズムを意図したものではありません。別の暗号化アルゴリズム内で使用するキーを導出する方法を意図したものです。

パスワードを要求し、それを (salt を使用して) 暗号化キーに変換し、そのキーを使用してデータを暗号化します (例: を使用TripleDES)。

その後、もう一度パスワードを要求し、同じソルトを使用して同じキーを生成し、それを使用して暗号化されたデータを復号化できます。

詳細については、 RFC 2898を参照してください。

于 2013-06-02T07:52:42.047 に答える