通过MD5哈希算法运行哈希

时间:2014-04-20 13:56:51

标签: ruby algorithm hash md5

我是哈希的新东西,我希望能够通过MD5哈希运行哈希来产生唯一值。目前我只是简单地将Hash转换为字符串,然后通过MD5算法运行它。

这是一个很好的方法吗?还是有更好的方法来使用MD5加密哈希?

为了澄清我尝试为没有唯一ID的对象创建缓存密钥,因此我尝试使用哈希来创建ID。

1 个答案:

答案 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非常可逆,不适合保护数据。

编辑:细节和语法