在回顾一些旧的coldfusion代码时,我发现有几个数据实例是通过加密/解密函数用CFMX_COMPAT算法加密的。
经过一段时间的搜索,我一直无法找到这种算法。文档提到它现在是最不安全的方法,但我想知道为什么会这样。
(其中一些人已经建议它只是MD5,但由于数据被解密,这没有多大意义。)
答案 0 :(得分:6)
这是一种基于XOR- 的算法,但不是教科书算法,因此一揽子XOR算法答案不正确(过去已经错误地应用于这些CFMX_COMPAT问题)。
要详细了解此专有XOR的源代码,请检查this answer以“比较C#和ColdFusion之间的密码哈希值”,其中@Leigh(也评论过其中一个问题)帮助提供了算法的准确端口,直接从Railo源提取。
答案 1 :(得分:1)
这是一个简单的XOR算法。从技术上讲它是加密,但它是非常非常非常非常弱的加密。我应该多放一些"非常在那里。
据我所知,明文的每一位都是与密钥中的下一个字节进行异或,结果是密文。
所以如果我们看一下所有内容:
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 = Key
C =密文
如果您不熟悉XOR,它的工作原理如下:
0 XOR 0 - > 0
0 XOR 1 - > 1
1 XOR 0 - > 1
1 XOR 1 - > 0
答案 2 :(得分:0)
绝对不是MD5,因为这是一种哈希算法,而不是加密算法(正如你所指出的那样)。
我不知道它使用的是什么算法,但您可以在cfusion.jar中反编译相关的Java类并查看。我怀疑是否有更好的发现方式。我怀疑即使你打开一张他们实际告诉你的Adobe支持票。