有人告诉我他见过软件系统:
那可能吗?我认为解密MD5哈希是不可能/不可行的.
我知道有MD5词典,但是有没有实际的解密算法?
在散列它们并将它们存储在我的数据库中之前,我应该如何逃避或清除用户提供的密码?
当PHP开发人员考虑出于安全目的而考虑哈希用户的密码时,他们往往会像对待任何其他用户提供的数据一样考虑这些密码.这个主题经常出现在与密码存储相关的PHP问题中; 开发人员经常希望使用诸如escape_string()(在各种迭代中)等功能清理密码htmlspecialchars(),addslashes()然后再对其进行散列并将其存储在数据库中.
我正在将一个站点切换到rails.这是一个拥有5万多用户的大型网站.问题是,现有的密码哈希方法非常薄弱.我有两个选择:
1)切换到新算法,为每个人生成随机密码,然后通过电子邮件将这些密码发送给他们,并在之后立即要求更改
2)实现新算法但使用之前的旧算法然后散列结果.例如:
密码:abcdef =算法1 => xj31ndn =算法2 => $ 21aafadsada214
任何新的密码都需要通过原始算法(md5)然后如果有任何意义那么得到散列的结果?这有什么不利吗?
PHP 5.5中新的password_hash API很不错,我想开始在任何地方使用它.鉴于较旧的项目具有较旧的数据库,其中密码存储在md5哈希中,将旧用户密码迁移到新的更安全的API的最佳方法是什么?
除了简单地提示用户在下次登录时重置密码(这对用户来说这是不切实际和烦人的)我还考虑过使用当前md5哈希作为所有现有用户的password_hash()输入的可能性.为了验证这些用户的密码(在登录期间),我将他们的输入转换为md5哈希,然后将其用于password_verify().新用户将免于这一额外的步骤.
这是一个值得这样做的方法吗?是否有更好的透明迁移方式,用户不会因密码重置而烦恼,但我可以立即享受更安全的哈希带来的好处吗?
最重要的是,在使用现有的md5哈希(易于暴力)和使用password_hash()API来"双重哈希"时,是否还有安全优势?