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

如何(盐和哈希)并在java中存储密码...然后检查密码是否与用户的手动输入匹配

宿淳
2023-03-14

因此,我用java编写寄存器和登录系统。我对注册的计划是:用户输入用户名,然后输入密码。

密码被存储在一个. txt文件中。现在,当用户必须输入登录系统的密码时,我如何从。txt文件自其加盐?

我的问题有两个:我如何盐密码,然后存储它。如何找回原来的密码,所以要检查一下。

我找了很多东西,但都没有找到。

共有1个答案

杜成和
2023-03-14

你保存了加盐的密码和盐。因此,保存密码时,请执行以下操作:

    < li >创建salt(特定长度的随机散列) < li >散列密码盐组合 < li >存储此散列字符串,但也存储salt和用户名。

不要存储明文密码!

当用户稍后尝试登录时,您可以执行以下操作:

  • 检索散列密码和盐(与用户名一起存储,所以按用户名查找)
  • 哈希密码(由想要登录的用户提供)盐
  • 将此散列字符串与您存储的散列密码进行比较。
  • 如果它们相等,则用户提供了正确的密码。

因此,您永远不要将用户提供的明文密码与您保存的明文密码进行比较,因为保存明文密码是不安全的,以防此数据受到损害。

 类似资料:
  • 如果用户创建了一个新密码,并通过哈希算法存储在数据库中,则在用户登录时可以将其与用户输入的密码进行匹配。输入到登录屏幕的密码将被哈希化,然后检查它是否与存储的哈希匹配。如果是,则允许用户访问。 然而,如今,密码是经过哈希和盐处理的。因此,当用户第一次注册密码时,它会经过一个散列,然后会被加密10000次以上。这个salt与后端代码生成的关键字相同,还是每次salt都随机生成? 当用户输入密码登录时

  • 我认为我理解散列和加盐密码,但似乎我有一些误解。我在nodejs为我的网站创建一个用户帐户系统。 我的理解是,当用户创建密码时,我们会生成一个随机盐,将其附加到密码中,然后散列该字符串。我们还可以添加一个工作因子以使散列工作缓慢并防御蛮力攻击。我们将盐与散列一起存储在我们的数据库中,为了验证登录尝试,我们使用存储的盐和尝试的密码重复上述过程(在服务器上),并检查散列是否匹配。 nodejs中的模块

  • 我正在尝试实现一段代码,检查hashed_password和user_name是否匹配。下面的代码首先检查用户名是否有效,如果有效,代码将检查密码是否与用户名匹配。但是,这是一段代码不起作用。我可以从数据库输入正确的用户名和相应的正确密码,它会显示正确的消息。但是如果我从数据库输入正确的用户名,但密码不正确,它仍然会显示。感谢任何帮助!

  • 问题内容: 目前,据说MD5部分不安全。考虑到这一点,我想知道使用哪种机制进行密码保护。 这个问题,“双重哈希”密码是否比仅哈希一次密码安全? 建议多次散列可能是一个好主意,而如何对单个文件实施密码保护?建议使用盐。 我正在使用PHP。我想要一个安全,快速的密码加密系统。将密码哈希一百万次可能更安全,但也更慢。如何在速度和安全性之间取得良好的平衡?另外,我希望结果具有恒定数量的字符。 哈希机制必须

  • 问题内容: 因此,我在SO上发现应该将密码和“ salt”一起散列。(可在此处和此处找到文章。) 这是代码: 现在,我需要同时将和和保存在MySQL中,如下所示: ** 当然会被散列,而不是以纯文本形式存储。 我只是想知道以这种方式进行操作实际上是否有意义,因为通过这种方式,黑客或其他任何人也都可以理解吗?因此,如果他们破解了密码并且看到了密码,他们会自动知道密码是?还是因为他不知道密码(因为密码

  • 我一直在研究散列/加密密码并将其存储在数据库中的正确方法。我知道盐和散列,所以我环顾四周,PBKDF2似乎是一个不错的选择。所以我找到了这个网站,它提供了一个很好的教程,以及一个适用于PHP的PBKDF2(这是我在我的网站上使用的)。 因此,我设置了我的网站,以使用这些功能生成/创建密码,但正如您在以下代码中看到的: salt在create_散列函数中生成,并存储在生成的散列中,该散列最终看起来像