【问题标题】:ColdFusion's CFMX_COMPAT encryption algorithmColdFusion 的 CFMX_COMPAT 加密算法
【发布时间】:2012-12-09 11:08:41
【问题描述】:

在查看一些旧的冷融合代码时,我发现了几个使用 CFMX_COMPAT 算法通过加密/解密函数对数据进行加密的实例。

搜索了一段时间后,我一直无法找到这是一种什么样的算法。文档提到它现在是最不安全的方法,但我想知道为什么会这样。

(其他地方的一些人建议它只是 MD5,但这并没有多大意义,因为数据正在被解密。)

【问题讨论】:

  • FWIW:同意它绝对不是 MD5。 (我怀疑印象来自hash 文档,该文档误导性地指出默认算法CFMX_COMPAT“生成与ColdFusion MX 和ColdFusion MX 6.1 生成的哈希字符串相同的哈希字符串”。这并不意味着CFMX_COMPATmd5是等价的。)

标签: encryption coldfusion


【解决方案1】:

它是一种基于 XOR 的算法,但不是教科书的算法,因此一揽子 XOR 算法的答案是不正确的(过去曾错误地应用于这些 CFMX_COMPAT 问题)。

要详细查看此专有 XOR 的源代码,请查看 this answer 到“比较 C# 和 ColdFusion 之间的密码哈希”,其中@Leigh(他也评论了其中一个问题)帮助提供了准确的端口算法,直接取自 Railo 源代码。

【讨论】:

  • 感谢您发布更好的答案。我一直听说这是一个简单的 XOR。我想在某种意义上它是,但并不像我被引导相信的那么简单。无论如何,当然,正确的答案始终是“不要使用 CFMX_COMPAT”:)
【解决方案2】:

这是一个简单的异或算法。从技术上讲,它是加密货币,但它是非常、非常、非常、非常、非常弱的加密货币。我应该在里面多放几个“非常”。

据我了解,明文的每一位都与密钥中的下一个字节进行异或运算,结果是密文。

因此,如果我们以位来看待所有内容:

P: 1 0 1 0 1 0 1 0 0 0 1

K: 0 0 1 1 1 0 0 1 0 1 0

C: 1 0 0 1 0 0 1 1 0 1 0

P = 明文

K = 键

C = 密文

如果你不熟悉异或,它的工作原理是这样的:

0 异或 0 -> 0

0 异或 1 -> 1

1 异或 0 -> 1

1 异或 1 -> 0

【讨论】:

    【解决方案3】:

    绝对不是 MD5,因为那是一种散列算法,而不是加密算法(正如您所指出的)。

    我不知道它使用什么算法,但你可以反编译 cfusion.jar 中的相关 Java 类并看看。我怀疑有比这更好的发现方法。我怀疑即使您向 Adob​​e 开出支持票证,他们实际上会告诉您。

    【讨论】:

    • 你可以看看Railo source。可能会有细微差别,但大体算法是一样的。
    • 啊,是的!忘了那个!好建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多