当前位置: 首页 > 知识库问答 >
问题:

散列/加盐密码的生命周期

毋宏茂
2023-03-14

虽然我理解加盐和散列密码过程背后的神学,但我不太理解方法论。据我所知,这个问题及其相关答案中列出的方法,以及MSDN的这篇文章,都经历了创建不同长度的salt的步骤,以便在散列给定密码的过程中使用。

但是,稍后检查密码怎么样?据我所知,再次创建哈希将导致生成全新的盐,最终导致在尝试登录时验证失败。

我是否错过了盐或盐配方的保存位置?还是我不太了解这个过程?

共有1个答案

和光启
2023-03-14

您应该:

  1. 为要散列的每个密码创建一个新的盐
  2. 哈希密码
  3. 将哈希和盐保存为纯文本。

当您想要对用户进行身份验证时,您只需要使用之前保存在数据库中的盐再次计算哈希值,然后比较哈希值即可。

这是一篇很好的文章,详细解释了这个过程。它还提供了一个完整的C#实现。

 类似资料:
  • 我模拟存储密码散列,并在登录过程中验证它。 我有一个名为的方法来获取字符串密码,并通过添加盐返回它的哈希值。 我选择一个静态值,在本例中,我选择一个相同的密码值() 但结果是: 为什么这两个值不相同? 我的代码有什么问题?

  • 我正在使用。NET Bcrypt哈希实现来自第三方库,它具有创建哈希的方法,只需提供文本或密码,如下所示。 我知道生成的hash包含salt信息,但在创建hash时它没有获取salt参数。 Bcrypt在内部创建随机盐并使用它? 如果我不使用salt重载方法,它会导致安全漏洞吗?

  • 问题内容: 我正在开发一个小型的Web应用程序,该应用程序在内部对用户进行身份验证。一旦用户通过身份验证,我的Web应用程序便会将一些信息(例如userID和Person的名称)传递给第三方Web应用程序。第三方开发人员建议我们对值进行哈希处理和加盐处理。 原谅我的无知,但这到底意味着什么? 我正在用Java编写应用程序。因此,我打算做的是使用Apache Commons Digest Utils

  • 我想在C#中使用PBKDF2加胡椒和盐来散列密码。我对密码学有点陌生,所以如果我错了,请随时纠正我。 我之所以使用Rfc2898DeriveBytes类,是因为(根据其他Stackoverflow用户的说法)bcrypt和其他哈希算法在C#中不受本机支持和验证,因此可能会造成安全威胁。这篇文章的目的不是开始讨论哪种哈希算法是最好的。 我的目标是:每个密码都会得到一个随机的盐和胡椒,密码会经过一定数

  • 我用这个教程来帮助我,当用户创建一个帐户时,对他们的密码进行加盐和散列,然后当用户输入密码登录时,将这些密码带回来并进行比较。 在这个图坦卡蒙中,它们有两个我想调用的函数。 和 我随后自己创建了另一个函数,它会爆炸结果,因此我可以从整个have中剥离加盐字符串。 所以当我在数据库中插入数据时,它看起来像这样 请注意,最后一列包含第三列中字符串的最后一部分。 因此,最后一步是登录时,用户将输入他们的

  • 问题内容: 所以我正在尝试bcrypt。我有一类(如下所示,该类来自http://www.firedartstudios.com/articles/read/php- security-how-to-safe-store-your- passwords ),其中包含3个功能。第一个是生成随机的Salt,第二个是使用第一个生成的Salt生成哈希,最后一个是通过将提供的密码与哈希密码进行比较来验证所提