gpt4 book ai didi

ruby - Ruby 1.8 和 1.9 的字符串哈希码是否相同?

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:59 26 4
gpt4 key购买 nike

我想用String.hash来生成hash code,但是我担心如果过段时间我把版本从1.8升级到1.9,生成的hash code也会改变。

Ruby 1.8 和 1.9 的字符串哈希码是否相同?

最佳答案

幸运的是,答案很简单,因为他们没有:

~$ 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。)

关于ruby - Ruby 1.8 和 1.9 的字符串哈希码是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com