现有的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)#'
。请帮忙。感谢。
答案 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")#