定义:BCrypt 是一种用于密码加密与校验的密码散列算法,主要用于存密码。
核心:不存明文密码,只存"不可逆的加密结果",登录时用算法自己去比对。做法:用户输入明文 然后matches 去和数据库密文比对
代码体现:passwordEncoder.matches(rpassword, user.getPassword())。
特点:
- 不可逆:你永远无法从数据库里的 BCrypt 字符串反推出原始密码。
- 自带随机盐(salt):每次加密,即使是同一个密码,生成的结果也不一样。
项目里的BCrypt如何工作的:
注册时
用户输入密码 → encode() → 存数据库
登录时
用户输入密码 + 数据库里的加密串 → matches() → 返回 true / false