这怎么可能?我无法让Ruby给我和PHP相同的MD5,也无法解决这个问题。。。我想过编码,但似乎我已经设法使每个文件保持相同的格式。
PHP代码:(结果:bfa7df865d9f4aff62c4643)
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
使用单引号而不是双引号
Digest::MD5.hexdigest('9jdaksjdfosdjsljz91m1wms0zkzd0k0askd1m2l3!@3@#@akskd9')
正是"#@"的组合使其希望将字符串末尾的"@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@