4

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

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

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

4

3 回答 3

6

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

要详细查看此专有 XOR 的源代码,请查看“Compare Password Hashes Between C# and ColdFusion”的答案,其中@Leigh(他也评论了其中一个问题)帮助提供了算法的准确端口,直接从 Railo 源中提取。

于 2012-12-21T22:54:34.260 回答
1

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

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

因此,如果我们逐个查看所有内容:

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

克: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 = 密文

如果您不熟悉 XOR,它的工作原理如下:

0 异或 0 -> 0

0 异或 1 -> 1

1 异或 0 -> 1

1 异或 1 -> 0

于 2012-12-21T22:03:48.200 回答
0

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

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

于 2012-12-21T21:42:07.623 回答