【问题标题】:Secure way to encrypt password [duplicate]加密密码的安全方法[重复]
【发布时间】:2011-07-10 15:52:58
【问题描述】:

可能重复:
Secure hash and salt for PHP passwords

这是加密存储在 mysql 数据库中的密码的安全方法吗:

md5(sha1($password))

谢谢。

【问题讨论】:

  • 不,你应该加盐,双重哈希没有好处。
  • 简答:使用 phpass (openwall.com/phpass)。默认情况下它做的一切都是正确的:加盐、使用 bcrypt、密钥强化。
  • @Dagon:在这点上我会部分不同意你的观点。如果数据库被盗并且黑客无法获得任何代码,那么链式哈希函数(无论是多次相同的函数还是不同的函数)将使确定原始明文变得更加困难。首先,攻击者必须找到一种方法来确定哪些哈希算法以何种方式链接,如果/何时链接,由于计算复杂性更高,暴力破解过程将花费更长的时间。
  • 取决于攻击类型,他们必须已经拥有数据库,双哈希才能产生任何影响,然后可能游戏结束,如果他们是暴力强迫,那么唯一的优势就是轻微的速度放慢。人们常常想出这样的东西,却忽略了某人可以破坏网站的其他数百万种方式。

标签: php mysql


【解决方案1】:

你在这里做的是hashing,而不是encrypting

散列的目的是不将密码本身存储在数据库中,这样如果数据库被盗,攻击者将无法获得所有用户密码的知识。

哈希应该与salting哈希一起使用,否则已经获得数据库访问权限的攻击者将相对容易破解存储在那里的密码。

此外,对相同的输入进行两次散列(如您的示例对 md5sha1 所做的那样)不会提供任何显着的好处。

【讨论】:

    【解决方案2】:

    为每个密码生成随机盐,并使用HMAC-SHA1 计算密码摘要。盐用作密钥,密码用作消息。 salt和digest存储到数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-22
      • 2016-04-28
      • 2014-11-20
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2010-09-16
      • 2011-02-04
      相关资源
      最近更新 更多