2011-05-26 99 views
4

散在生產服務器:產生對紅寶石

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

可升級服務器上:

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

兩個散列不匹配。你可以給我你在這種情況下做什麼的想法嗎?

回答

9

Ruby的默認散列並不保證在實現中保持一致。如果您需要一致的哈希,您應該使用標準化哈希算法,如MD5,SHA1或類似算法。

編輯: 在進一步的調查,事實證明它是不是跨越不同的流程,甚至是一致的:

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

看來這可能是一個intended security feature inherited from Perl防止algorithmic complexity attacks

+0

感謝您的回答。 – khanh 2011-05-26 07:13:45