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

标签 java passwords salt

所以我用java编写了一个寄存器和登录系统。我的注册计划是:用户输入用户名,然后输入密码。

密码经过加盐处理并存储在 .txt 文件中。 现在,当用户必须输入登录系统的密码时,我如何检索原始密码并从 .txt 文件中检查它,因为它是加盐的?

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

我搜索了很多东西,但没有找到任何相关内容。

最佳答案

您保存加盐密码和盐。因此,在保存密码时,您需要执行以下操作:

  • 创建盐(一定长度的随机哈希)
  • 对密码 + salt 组合进行哈希处理
  • 存储此哈希字符串,同时存储盐和用户名。

不要存储明文密码!

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

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

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

关于java - 如何(加盐和散列)并在 java 中存储密码..然后检查密码是否与用户的手动输入匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59589775/

相关文章:

java - 我如何从java中的InputStream中提取某些模式,然后放入byteArray中

java - java堆分配多少物理内存是怎么决定的?

javascript - 随 secret 码生成

java - 如何使用Java从Windows Vault中检索用户名和密码?

php - 在 WordPress 中比较散列密码与 PHP

asp.net-mvc-2 - 加盐密码 - 有比使用时间戳更好的选择吗?

java - 如何使用 db spring 3.1 security 实现每个用户登录/退出的自定义 SHA-256 salt?

java - 如何摆脱警告 : Use '$' instead of '.' for inner classes in Eclipse

java - 从未缩放的 long 创建 BigDecimal

html - 为某些密码输入字段禁用 Firefox 密码管理器