Ruby 1.8和1.9对于字符串具有相同的哈希码?
发布时间:2020-12-16 22:54:55 所属栏目:百科 来源:网络整理
导读:我想使用String.hash来生成哈希码,但是担心如果稍后我将版本从1.8升级到1.9,生成的哈希码也会改变. Ruby 1.8和1.9对于字符串具有相同的哈希码? 解决方法 幸运的是,答案很容易,因为他们没有: ~$ruby1.8 -e 'p "hello world".hash'444332266~$ruby1.9 -e 'p
我想使用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 如果使用内置哈希方法,我建议将脚本作为构建过程的一部分,生成必要的哈希码.请注意,即使从一台机器到另一台机器,它们也不能保证相同. 如果您需要一致的散列,请使用像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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |