代码之家  ›  专栏  ›  技术社区  ›  Bob Mc

密码salt:其他最佳实践

  •  3
  • Bob Mc  · 技术社区  · 15 年前

    像大多数程序员一样,我不是密码学专家,但我了解基本知识。然而,一点知识可能是一件危险的事情,如 Jeff's blog post . 考虑到这一点,我理解盐值的目的,但我需要一些帮助来理解如何 使用 盐值。

    我在其他关于这个主题的文章中读到,最好对每个要加密的密码使用随机salt值。如果是这种情况,当我尝试验证用户身份时,如何复制该随机salt值?在这个场景中,我将加密用户提供的明文密码,对其进行加密,并将其与数据库中存储的密码进行比较。创建密码时,是否将随机salt值与加密密码一起存储在用户记录中?如果黑客有完整的用户记录,这是否会使salt值无效?

    2 回复  |  直到 6 年前
        1
  •  8
  •   Amber    15 年前

    盐的主要用途是防止 rainbow tables 当破解密码散列时——如果不使用salt,只需使用预先生成的反向查找表来查找散列,并立即知道可能生成密码的密码。

    使用salt时,彩虹表方法会失败,因为哈希到密码的映射对于特定salt是完全不同的-因此,必须为每个salt值单独生成彩虹表(生成彩虹表所需的时间与强制哈希wi所需的时间成正比没有彩虹桌的帮助。

    由于salt的作用是不允许使用预先生成的彩虹表,不管攻击者是否知道特定用户条目的特定salt,只要您对每个条目使用唯一的salt,就没有真正的理由单独存储它。

        2
  •  1
  •   Torandi    15 年前

    我通常将我的盐存储在与用户数据相同的表中-如果黑客直接访问你的数据库,他们无论如何都会破解你的密码,盐只是延迟它的一种方法。这将在一定程度上阻止他们使用彩虹桌。