【问题标题】:adding salt to a password给密码加盐
【发布时间】:2015-07-19 01:13:00
【问题描述】:

加盐密码真的有意义吗?

如果一个程序完成了 SALT 服务器端的所有处理,那么它真的会让暴力破解或其他攻击变得更加困难。该代码只会将盐应用于用户输入的任何内容。

这一切都错了吗?

【问题讨论】:

标签: hash passwords salt


【解决方案1】:

是的,加盐密码是有道理的。

关键是每个密码都有自己的盐,因此攻击者无法利用字典和彩虹表一次暴力破解所有密码。

盐不会使破解单个密码变得更难¹,但它消除了尝试一次破解多个密码的好处。攻击者必须一次暴力破解一个密码。


¹ 至少不足以成为使用它的充分理由。使用更好的密码效果会更好。

【讨论】:

  • 这就是加盐的重点,这也解释了为什么盐不需要保密。
【解决方案2】:

总之,是的。

对密码进行加盐会增加字符串的复杂性并使人类感到困惑,并使字典攻击不太可能成功。

然而,蛮力仍然可以破解此密码,因此需要随机生成的盐。

盐通常是通过字节数组生成的,然后将其输入到一个函数中,以将两个字符串每隔一段时间组合成一个字符串。看我的回答here

【讨论】:

    【解决方案3】:

    散列可能在没有盐的情况下泄漏(常见情况:数据库被转储,但我存在于 PHP 源中的盐不会泄漏)。

    【讨论】:

    • 对所有密码使用相同的盐会破坏目的。
    • 不,它没有,如果不知道盐,对哈希值进行暴力攻击会更加困难
    • 我同意@Guffa,最好的做法是在每次创建用户时随机生成一个新的盐字符串。
    • @MichaelWiggins 是的,这是最佳实践,这不是讨论。我在解释一个常见的场景。未知的盐使事情变得更难
    • @zedd:是的,对所有密码使用相同的盐确实会破坏目的。加盐密码的全部意义在于每个密码都有不同的加盐值。如果你没有正确使用盐,那么使用它根本没有意义。
    【解决方案4】:

    在某种程度上你是对的,但是......对 SALT 最重要的保护是,如果哈希确实被释放到野外,那么反向哈希查找要困难得多。

    散列一个词,然后将散列结果放到你最喜欢的搜索引擎中,看看我的意思。

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 2016-04-09
      • 2014-05-03
      • 2010-11-30
      • 2012-07-05
      • 2011-08-24
      • 2013-09-22
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多