所以我用java编写了一个寄存器和登录系统。我的注册计划是:用户输入用户名,然后输入密码。
密码经过加盐处理并存储在 .txt 文件中。 现在,当用户必须输入登录系统的密码时,我如何检索原始密码并从 .txt 文件中检查它,因为它是加盐的?
我的问题有两个: 我如何对密码加盐然后存储它。 如何找回原来的密码,所以来查看一下。
我搜索了很多东西,但没有找到任何相关内容。
最佳答案
您保存加盐密码和盐。因此,在保存密码时,您需要执行以下操作:
- 创建盐(一定长度的随机哈希)
- 对密码 + salt 组合进行哈希处理
- 存储此哈希字符串,同时存储盐和用户名。
不要存储明文密码!
当用户稍后尝试登录时,您执行以下操作:
- 检索散列密码和盐(与用户名一起存储,因此可以通过用户名查找)
- 对密码进行哈希处理(由想要登录的用户提供)+ salt
- 将此哈希字符串与您存储的哈希密码进行比较。
- 如果相等,则用户提供了正确的密码。
因此,您永远不会将用户提供的明文密码与您保存的明文密码进行比较,因为保存明文密码是不安全的,以防数据泄露。
关于java - 如何(加盐和散列)并在 java 中存储密码..然后检查密码是否与用户的手动输入匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59589775/