【发布时间】:2014-05-28 13:06:23
【问题描述】:
我想把一个 Ruby 程序生成的 MD5 哈希传递给一个 PHP 程序,结果发现了一些奇怪的东西。
Ruby 代码(结果:ad0efdf609e99ec50d9333dc0bd1c11a)
Digest::MD5.hexdigest 'test str1&test str2&test str3&test str4'
PHP代码(结果:804160119894a4cc8c376fffbcc21e1c)
您可以看到结果有所不同...但是如果我删除字符串中的“&”:
Ruby 代码(结果:45fa91e4c89aa6f3bb501531a5de6bf4)
Digest::MD5.hexdigest 'test str1test str2test str3test str4'
PHP 代码(结果:45fa91e4c89aa6f3bb501531a5de6bf4)
它们是一样的。为什么会这样? MD5算法在任何语言中都应该是一样的,不是吗?
【问题讨论】:
-
我认为这些 &$#% 用不同的语言编写不同的字符串。有时它是由 4 位代码编写的。你试过转义这个字符串吗?
-
您的默认编码是什么? :stackoverflow.com/questions/16753321/…
-
我真的希望你不要使用这些密码。