关于在数据库中存储用户密码和验证
数据库中加密存储密码和验证密码的步骤
以下内容来自ChatGLM
存储密码
- 生成盐(Salt):
- 为每个用户生成一个随机盐。
- 密码与盐结合:
- 将用户密码与盐值结合。
- 加密:
- 使用上述算法对结合后的密码进行加密。
- 存储:
- 将加密后的密码(哈希值)和盐存储在数据库中。
验证密码
从数据库中取出盐和哈希值:
- 在用户尝试登录时,系统需要从数据库中检索与该用户账户关联的盐值和之前存储的哈希密码。
使用相同的算法和盐对用户输入的密码进行加密:
- 将用户输入的密码与从数据库中取出的盐值结合,然后使用相同的加密算法对结合后的密码进行加密。
比较加密后的值与数据库中的哈希值是否相同:
- 将新计算出的哈希值与数据库中存储的哈希值进行比较。如果两者匹配,说明用户输入的密码正确;如果不匹配,说明密码错误。
关于盐:
内容来自 https://www.cnblogs.com/xjnotxj/p/12716981.html
- 盐不能太短
- 盐不能重复使用(否则一破解,所有的都遭殃)
- 盐随机变化(例如,虽用户名不重复,但用户名不能拿来当盐)