RoR-MD5代


76

如何在Rails 3.0中使用MD5加密字符串? pass = MD5.hexdigest(pass) 在模型中产生uninitialized constant MyModel::MD5


3
您可能想查看一下这篇文章,以了解为什么将MD5 / SHA用作身份验证方案的一个不好选择:codahale.com/how-to-safe-store-a-password
Mike Buckbee,

术语要点:使用MD5算法进行哈希处理不是加密。当您还希望能够解密某物时,您可以对其进行加密。通常,您无法从哈希中确定原始消息,而这恰恰是使用哈希算法的关键所在。
混乱

Answers:


176

您可以Digest::MD5从Ruby标准库中使用。

irb(main):001:0> require 'digest/md5'
=> true
irb(main):002:0> Digest::MD5.hexdigest('foobar')
=> "3858f62230ac3c915f300c664312c63f"

还有一件事:MD5是一种哈希算法。您不会使用哈希算法来“加密”任何东西。


15
还有一件事:MD5基本上已经被破坏了(从密码的意义上来说),不应再使用了。如果您开始一个新的软件项目,请使用更强大的哈希算法(例如SHA512或bcrypt),并且不要忘记在对密码进行哈希处理之前先添加盐。
joschi 2010年

8
MD5出于加密目的而被破坏,但仍可用于比较文件。毕竟Git仍然使用它。但是不要用MD5
哈希

2
Git几乎将SHA1用于其所有哈希需求。
joschi 2013年

2
如果您要哈希密码以存储到数据库中,请使用bcrypt而不是MD5。两者都可以作为Ruby库提供,并且从实现的角度来看,两者都同样容易,但是在极少数情况下,如果数据库遭到破坏(这是存储之前哈希密码的全部要点),则bcrypt比md5难破解,因此永远是一个更好的选择。别忘了加盐。
lms 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.