gpt4 book ai didi

security - 如果密码是用 "salt"加密的,如何在数据库中检查密码?

转载 作者:行者123 更新时间:2023-12-02 16:39:57 26 4
gpt4 key购买 nike

我读过一种方法“加盐密码”可以提高密码保护。但是如果密码以复杂的形式存储,我不明白如何检查密码。我假设用户的密码在客户端被加密,然后它的哈希码与数据库中的哈希码进行比较。我没有网络开发经验。我只是在学习网络安全的方法。

最佳答案

既然你说你目前正在学习它,我会尝试做一些介绍。并将尽量使其简短。

  • Salt 是我们生成并添加到纯密码/密码短语中的随机字符串。它可以作为 plain 存储在数据库中紧挨着 Hash Value
  • Hashing 是一种将数据映射到具有固定长度的值的方法。此值称为 Hash Valuechecksum。散列是单向的。 MD5 和 SHA256 是散列算法的一些示例。

盐的好处

我们在这里所做的基本上是确保所有用户都有唯一的密码(在哈希输出中)。这将避免可能的攻击者捕获用户数据同时计算多个用户的密码。

换句话说,当有人查看所有用户名和密码时,他们将无法说出哪些用户使用相同的密码。

下表可以帮助我们更好地理解它。

| username | salt             | plain-password |salted-password-to-be-hashed | hashed-password                                                  |
|----------|------------------|----------------|------------------------------|------------------------------------------------------------------|
| user1 | db97913154884d72 | password1 | password1db97913154884d72 | 5027a576d161385ddcc72e47280f85729fc3ba5e48e0a018e2f68dc7d13e93cc |
| user2 | 8fc2884d127fd40b | password1 | password18fc2884d127fd40b | 6069e0e5a06d41ed0ffb06d0c0e26dd7dea3cb14de80e4075848d3217b40b783 |

以下步骤演示了存储和验证基本方法

如何存储? (注册)

  • plain-password 从客户端通过 https 进入您的后端应用程序。
  • 后端应用程序生成一个salt 并将其附加(或前置)到明文密码。
  • 然后,使用散列算法(例如 SHA-256、MD5 等)计算hashed-password
  • 最后,将usernamesalthashed-password 存储到数据库中。 (从不存储 plain-password 和/或 salted-password-to-be-hashed。)

如何进行身份验证?

  • plain-password 从客户端通过 https 进入您的后端应用程序。
  • 后端应用程序从数据库中获取用户特定的 salt 并将其附加(或添加)到明文密码。
  • 然后,使用相同的散列算法计算hashed-password,并将其与存储的进行比较。

更高级一点:

您还可以添加第二种名为pepper 的盐。这是要添加到纯密码的另一个随机字符串(胡椒 + 纯密码 + 盐)。但是这里,pepper 存储在另一个数据源中,而不是在 salthashed-password 旁边。

关于security - 如果密码是用 "salt"加密的,如何在数据库中检查密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61893312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com