问题描述
|
在生产服务器上:
\"KYK_iphone3.jpg\".hash.abs%1000
=> 908
但是在登台服务器上:
\"KYK_iphone3.jpg\".hash.abs%1000
=> 740
两个哈希值不匹配。您能给我您在这种情况下该怎么做的想法吗?
解决方法
不能保证Ruby的默认哈希在各个实现之间是一致的。如果需要一致的哈希,则应使用标准的哈希算法,例如MD5,SHA1或类似的哈希算法。
编辑:
经过进一步的调查,结果发现不同过程之间甚至不一致:
$ irb
> \"abc\".hash
=> 3669021835949727595
> exit
$ irb
> \"abc\".hash
=> 2091809102525897616
看来这可能是从Perl继承来的预期安全功能,可以防止算法复杂性攻击。