1

このページのサンプルの C# コードをコピーして使用しました。C# はこの ColdFusion Decrypt 関数に相当しますが、うまくいきません。そのページの coldfusion 復号化サンプルが、私が持っているものと同じかどうかはわかりません。とにかく、私のコールドフュージョン コードは次のようになります。

暗号化するには:

<cfset strBase64Value = ToBase64(encrypt(strValue,"mykey")) />

解読するには:

<cfset strDecrypted = decrypt(ToString(toBinary(strBase64Value)),"mykey") />

strValue は開始する文字列、strDecrypted は返された復号化された文字列、strBase64Value は暗号化された文字列、「mykey」は文字列の暗号化/復号化に使用されるキー パスワードです。

私のC#コードは次のとおりです。

    private string ConvertString(string string1, string string2)
    {
        byte[] key = ASCIIEncoding.ASCII.GetBytes(string1);
        byte[] encryptedData = Convert.FromBase64String(string2);

        Aes aes = Aes.Create();
        aes.Mode = CipherMode.ECB;

        using (var ms = new MemoryStream())
        {
            using (var cs = new CryptoStream(ms, aes.CreateDecryptor(key, null), CryptoStreamMode.Write))
            {
                cs.Write(encryptedData, 0, encryptedData.Length);
            }
            byte[] decryptedData = ms.ToArray();
            string clearText = Encoding.ASCII.GetString(decryptedData);
            return clearText;
        }
    }

「指定されたキーは、このアルゴリズムに対して有効なサイズではありません。パラメータ名: キー」というエラーが表示されます。

4

1 に答える 1

3

リンクされた例では、まったく異なるアルゴリズムであるAESを使用しています。コードは古いcfmx_compatアルゴリズムを使用しています。標準のc#ライブラリには同等のものはありません。しかし、ここにcfmx_compatのac#ポートがあります(オープンソースのRailoエンジンからリッピングされています:)。

cfmx_compatはいえ、非常に安全ではなく、下位互換性のためにのみ維持されます。AESなどのより安全なアルゴリズムに切り替えることを強くお勧めします。

于 2012-09-17T22:56:04.317 に答える