我是哈希的新东西,我希望能够通过MD5哈希运行哈希来产生唯一值。目前我只是简单地将Hash转换为字符串,然后通过MD5算法运行它。
这是一个很好的方法吗?还是有更好的方法来使用MD5加密哈希?
为了澄清我尝试为没有唯一ID的对象创建缓存密钥,因此我尝试使用哈希来创建ID。
答案 0 :(得分:2)
Ruby哈希内置支持Murmur3哈希。如果你被提交到md5哈希,那么使用它将无法正常工作。如果可以使用它,那么只需从Object类(http://ruby-doc.org/core-2.1.1/Object.html#method-i-hash)调用.hash方法。
pry(main)> {}.hash
=> 0
pry(main)> {:a => "b"}.hash
=> 2051585302280555993
pry(main)> "foo".hash
=> -2886254516463342771
Murmur3哈希比md5更快,但可能不适合加密用途。如果你必须使用MD5我没有理由为什么散列字符串从根本上是坏的。如果需要,甚至可以轻松地在Ruby以外的语言中重新创建相同的哈希,因为它将实现与Ruby的内部二进制格式分开。
如果您必须使用加密哈希但未提交给MD5,请使用BCrypt,SHA1或SHA256。 MD5非常可逆,不适合保护数据。
编辑:细节和语法