RoR - MD5生成

83

在Rails 3.0中,如何使用MD5加密字符串?

pass = Digest::MD5.hexdigest(pass) 在模型中执行会导致 uninitialized constant MyModel::MD5的错误。

3
您可能希望查看这篇文章,了解为什么在身份验证方案中使用MD5 / SHA是一个不明智的选择:http://codahale.com/how-to-safely-store-a-password/。 - Mike Buckbee
一个术语点:哈希,例如使用MD5算法,不是“加密”。当你想解密时才会进行加密。从哈希中通常无法确定原始消息,而这通常就是使用哈希算法的关键所在。 - Confusion
1个回答

188

你可以使用 Ruby 标准库中的 Digest::MD5 来完成此操作。

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

还有一件事:MD5是一个哈希算法。你不能使用哈希算法“加密”任何东西。


16
还有一件事:从密码学意义上讲,MD5 已经基本被破解,不应再使用。如果您开始一个新的软件项目,请使用更强的哈希算法,如SHA512或bcrypt,并在散列密码之前不要忘记添加盐。 - joschi
11
MD5已经不能用于加密,但仍可用于文件比较。毕竟Git仍在使用它。但是不要使用MD5来哈希密码。 - AlexQueue
3
Git几乎在所有的哈希需求中都使用SHA1算法。 - joschi
2
如果您要为存储到数据库的密码进行哈希处理,请使用bcrypt而不是MD5。两者都可以作为Ruby库使用,从实现角度来看,两者同样容易,但在数据库被攻破的情况下(这正是在存储密码之前进行哈希处理的全部意义),bcrypt比md5更难破解,因此始终是更好的选择。别忘了添加盐。 - lmirosevic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接