解决方法
幸运的是,答案很容易,因为他们没有:
~$ruby1.8 -e 'p "hello world".hash' 444332266 ~$ruby1.9 -e 'p "hello world".hash' -194819219
如果使用内置哈希方法,我建议将脚本作为构建过程的一部分,生成必要的哈希码.请注意,即使从一台机器到另一台机器,它们也不能保证相同.
如果您需要一致的散列,请使用像CRC32或SHA1这样的东西:
>> require 'zlib' >> Zlib.crc32 "hello world" => 222957957 >> require 'digest' >> Digest::SHA1.hexdigest "hello world" => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" >> Digest::MD5.hexdigest "hello world" => "5eb63bbbe01eeed093cb22bb8f5acdc3"
它们具有完全不同的目的,但是CRC32具有返回32位数并且相当快的优点,而SHA1是80位数,但更安全. (我假设这不是用于加密的,但如果需要,请查看SHA-256)