Ruby 1.8和1.9对于字符串具有相同的哈希码?

前端之家收集整理的这篇文章主要介绍了Ruby 1.8和1.9对于字符串具有相同的哈希码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用String.hash来生成哈希码,但是担心如果稍后我将版本从1.8升级到1.9,生成的哈希码也会改变.

Ruby 1.8和1.9对于字符串具有相同的哈希码?

解决方法

幸运的是,答案很容易,因为他们没有: @H_301_8@~$ruby1.8 -e 'p "hello world".hash' 444332266 ~$ruby1.9 -e 'p "hello world".hash' -194819219

如果使用内置哈希方法,我建议将脚本作为构建过程的一部分,生成必要的哈希码.请注意,即使从一台机器到另一台机器,它们也不能保证相同.

如果您需要一致的散列,请使用像CRC32SHA1这样的东西:

@H_301_8@>> 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)

猜你在找的Ruby相关文章