在ruby上生成哈希

时间:2011-05-26 06:39:41

标签: ruby-on-rails ruby

在生产服务器上:

"KYK_iphone3.jpg".hash.abs%1000
=> 908

但是在登台服务器上:

"KYK_iphone3.jpg".hash.abs%1000
=> 740

两个哈希值不匹配。你能否告诉我你在这种情况下该怎么做的想法?

1 个答案:

答案 0 :(得分:9)

Ruby的默认散列不保证在各实现之间保持一致。如果需要一致的哈希值,则应使用标准化的哈希算法,如MD5,SHA1或类似算法。

修改 经过进一步调查,事实证明它在不同的过程中甚至不一致:

$ irb
> "abc".hash
 => 3669021835949727595
> exit 
$ irb
> "abc".hash
 => 2091809102525897616

看起来这可能是intended security feature inherited from Perl以防范algorithmic complexity attacks