1

现有的 Coldfusion 网站将转换为 dot net。

在 Coldfusion 代码中,密码使用 hash() 函数进行哈希处理,没有算法:

SomePassword = '#hash(fldPassword)#'

我找到了这个文件,说默认加密是

CFMX_COMPAT:生成与 ColdFusion MX 和 ColdFusion MX 6.1(默认)生成的哈希字符串相同的哈希字符串。

有一些文章实际上告诉我如何解密。

据 Macromedia 称,ColdFusion 加密函数使用基于 XOR 的算法,该算法利用基于用户作为参数传递给函数的种子的伪随机 32 位密钥。生成的数据是 UU 编码的。

您需要先对编码值进行 uudecode http://www.eggheadcafe.com/printsear...asp?linkid=351

然后使用加密的密钥对其进行异或。 http://www.java2s.com/Code/CSharp/La...deamessage.htm

如果你没有钥匙 - 你在浪费你的时间。

但是,如何让它发挥作用?我不认为有任何关键。我能看到的只有'#hash(fldPassword)#'. 请帮忙。谢谢。

4

2 回答 2

3

如果我正确阅读了文档,CFMX_COMPAT 散列只是 MD5。

所以:

byte[] hash = MD5.Create().ComputeHash(fldPassword);

验证您是否可以访问 ColdFusion 安装应该很容易。

于 2012-05-23T19:44:16.830 回答
3

有一些文章实际上告诉我如何解密。

散列和加密不是一回事。加密可以反转。如果您有正确的密钥等,您可以恢复原始值。而散列是一种单程旅行。一旦散列,就无法恢复原始值。(嗯......理论上。一些较弱的散列算法已被破坏。)所以你不能“解密”一个散列值。但是您可以复制混淆的结果字符串。

我找到了这个文档,说默认加密是CFMX_COMPAT

实际上它是指默认算法。但是,我不太确定描述是否正确。(编辑:正如 Rasmus 正确指出的那样,它确实说默认是 MD5)但是,CF9/7 无论如何都默认为 MD5。即使算法是CFMX_COMPAT. 因此,无论哪种情况,C# 中的简单 MD5 散列都会给您相同的结果。

即这些都产生相同的结果,即098F6BCD4621D373CADE4E832627B4F6

    #hash("test")#
    #hash("test", "cfmx_compat")#
    #hash("test", "md5")#
于 2012-05-23T19:47:32.640 回答