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

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

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

解决方法

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

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

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

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

原文链接:https://www.f2er.com/ruby/265458.html

猜你在找的Ruby相关文章