Spring Boot 中密码加密的两种姿势!

本文介绍了在Spring Boot中如何使用commons-codec库的MD5进行密码加密,并展示了自定义PasswordEncoder的实现。此外,文章还详细说明了Spring Security的BCryptPasswordEncoder的使用,以及其在用户注册和登录过程中的应用,强调了BCryptPasswordEncoder在密码加盐加密上的便利性。
摘要由CSDN通过智能技术生成

所以,这里我先来给大家介绍下 commons-codec 的用法。

首先我们需要引入 commons-codec 的依赖:

commons-codec

commons-codec

1.11

然后自定义一个 PasswordEncoder:

@Component

public class MyPasswordEncoder implements PasswordEncoder {

@Override

public String encode(CharSequence rawPassword) {

return DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes());

}

@Override

public boolean matches(CharSequence rawPassword, String encodedPassword) {

return encodedPassword.equals(DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes()));

}

}

在 Spring Security 中,PasswordEncoder 专门用来处理密码的加密与比对工作,我们自定义 MyPasswordEncoder 并实现 PasswordEncoder 接口,还需要实现该接口中的两个方法:

  1. encode 方法表示对密码进行加密,参数 rawPassword 就是你传入的明文密码,返回的则是加密之后的密文,这里的加密方案采用了 MD5。

  2. matches 方法表示对密码进行比对,参数 rawPassword 相当于是用户登录时传入的密码,encodedPassword 则相当于是加密后的密码(从数据库中查询而来)。

最后记得将 MyPasswordEncoder 通过 @Component 注解标记为 Spring 容器中的一个组件。

这样用户在登录时,就会自动调用 matches 方法进行密码比对。

当然,使用了 MyPasswordEncoder 之后,在用户注册时,就需要将密码加密之后存入数据库中,方式如下:

public int reg(User user) {

//插入用户,插入之前先对密码进行加密

user.setPassword(passwordEncoder.encode(user.getPassword()));

result = userMapper.reg(user);

}

其实很简单,就是调用 encode 方法对密码进行加密。完整代码大家可以参考 V 部落(https://github.co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值