如何在c#中的CFMX_COMPAT中哈希

时间:2012-05-23 19:03:41

标签: hash coldfusion cryptography

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

在coldfusion代码中,使用hash()函数对密码进行哈希处理,不使用算法:

SomePassword = '#hash(fldPassword)#'

我找到this document,说默认加密是

  

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

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

  

根据Macromedia的说法,ColdFusion加密功能使用了   基于XOR的算法,利用基于伪随机32位密钥   用户将种子作为参数传递给函数。该   结果数据是UUencoded。

     

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

     

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

     

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

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

2 个答案:

答案 0 :(得分:3)

如果我正确阅读文档,CFMX_COMPAT哈希只是MD5。

所以:

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

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

答案 1 :(得分:3)

  

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

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

  

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

实际上它指的是默认的算法。但是,我不太确定描述是否正确。 (编辑:正如Rasmus正确指出的那样,它确实说默认为MD5 )但是,无论如何,CF9 / 7默认为MD5。即使算法是CFMX_COMPAT。所以在任何一种情况下,C#中的简单MD5哈希都会给你相同的结果。

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

    #hash("test")#
    #hash("test", "cfmx_compat")#
    #hash("test", "md5")#