BCrypt密码加密

张开发
2026/5/24 0:14:16 15 分钟阅读
BCrypt密码加密
1.作用如果MYSQL数据库被盗账号密码就全没了所以要加密。还有可能蹲号子BCrypt特点不可逆加密无法解密回原文自动加盐同一个密码每次加密结果都不一样安全、简单、Spring自带2.BCrypt两个核心方法加密BCrypt.hashpw(明文密码,BCrypt.gensalt())验证BCrypt.checkpw(明文密码加密后密码)3.迭代一下登录代码注册时→密码加密存储UserController.java注册部分PostMapping(/register) public String register(RequestBody User user) { // 明文密码加密 String rawPassword user.getPassword(); String encodePassword BCrypt.hashpw(rawPassword, BCrypt.gensalt()); user.setPassword(encodePassword); // 存入加密后的密码 userService.register(user); return success; }登陆时→对比验证重点不能用where password?查询!必须先查用户再比对密码UserController.java登录部分PostMapping(/login) public String login(String username, String password, HttpSession session) { // 1. 只根据用户名查用户 User user userService.findByUsername(username); if (user null) { return fail; } // 2. 使用 BCrypt 校验密码明文 vs 密文 boolean ok BCrypt.checkpw(password, user.getPassword()); if (ok) { session.setAttribute(loginUser, user); return success; } else { return fail; } }UserService增加方法public User findByUsername(String username) { return userMapper.findByUsername(username); }UserMapper增加User findByUsername(String username);User Mapper.XML增加select idfindByUsername resultTypecom.example.easy_add_del_change_select.pojo.User select * from user where username#{username} /select4.最终效果数据库里密码长这样$2a$10$xxxxxxx...任何人都无法反查原文即使数据库泄露密码也没用企业标准安全方案5.总结密码不能明文存储必须使用 BCrypt 不可逆加密自动加盐每次加密结果不同登录时通过 checkpw 方法比对安全性极高。

更多文章