Ruby PHP MD5不兼容 - 这怎么可能?

时间:2013-02-15 17:52:33

标签: php ruby md5

这怎么可能?我不能让Ruby给我与PHP相同的MD5并且无法解决这个问题...我想编码,但似乎我设法保持每个文件的格式相同。

PHP代码:(结果:bfa7df865d9f4aff62c4643d0e1cb33b)

echo md5("9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9");

带Digest-MD5的Ruby代码:(结果:bd53907a1b47e9a381ee663ec75b59f4)

require 'digest/md5'
puts Digest::MD5.hexdigest("9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9")

使用HMAC-MD5的Ruby代码:(结果:d41d8cd98f00b204e9800998ecf8427e)

require 'hmac-md5'
puts HMAC::MD5.new("9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9").hexdigest

2 个答案:

答案 0 :(得分:7)

使用单引号而不是双引号

Digest::MD5.hexdigest('9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9')

答案 1 :(得分:2)

“#@”的组合使得它希望将字符串末尾的“@ akskd9”视为变量。

例如:

@akskd9 = "foobar"
puts "9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9"

=> 9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@foobar

..如果没有#,那么它会忽略@符号:

@akskd9 = "foobar"
puts "9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@@akskd9"

=> 9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@@akskd9

......有趣的是,在#之后没有{...},它将字符串的其余部分视为变量。

@ak = "foobar"
puts "9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9"

=> 9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@