在生产服务器上:
"KYK_iphone3.jpg".hash.abs%1000
=> 908
但是在登台服务器上:
"KYK_iphone3.jpg".hash.abs%1000
=> 740
两个哈希值不匹配。你能否告诉我你在这种情况下该怎么做的想法?
答案 0 :(得分:9)
Ruby的默认散列不保证在各实现之间保持一致。如果需要一致的哈希值,则应使用标准化的哈希算法,如MD5,SHA1或类似算法。
修改强> 经过进一步调查,事实证明它在不同的过程中甚至不一致:
$ irb
> "abc".hash
=> 3669021835949727595
> exit
$ irb
> "abc".hash
=> 2091809102525897616
看起来这可能是intended security feature inherited from Perl以防范algorithmic complexity attacks。