【问题标题】:coldfusion decrypt to c#冷融合解密到c#
【发布时间】:2012-09-17 22:39:08
【问题描述】:

我复制并使用了本页示例中的 C# 代码,C# equivalent to this ColdFusion Decrypt function,但它不适用于我。我不确定该页面上的coldfusion解密示例是否与我所拥有的相同。无论如何,我的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;
        }
    }

我收到一条错误消息,提示“指定的密钥不是此算法的有效大小。 参数名称:key"

【问题讨论】:

标签: c# coldfusion encryption


【解决方案1】:

链接的示例使用 AES,这是一种完全不同的算法。您的代码使用旧的 cfmx_compat 算法。标准 c# 库中没有等效项。但这里是a c# port of cfmx_compat(摘自开源Railo引擎:)。

也就是说,cfmx_compat 非常不安全,仅出于向后兼容性而维护。我强烈建议切换到更安全的算法,如 AES 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多