Spring Security实战--(四)密码加密

本文探讨了密码安全的重要性,介绍了Spring Security的PasswordEncoder接口及其加密机制。重点讲解了BCrypt加密方式,官方推荐使用它来提高密码安全性。在配置文件中启用BCrypt后,需要将数据库中的明文密码更新为BCrypt加密格式,例如示例中的加密密码。通过这种方式,用户登录时可以进行安全的身份验证。

一、密码安全的重要性

密码加密是一个很重要的安全性问题,当数据库存储密码时,应该使用可以安全存储用户密码的意识,防止数据库的明文密码泄露造成严重灾难

二、加密机制

PasswordEncoder接口

public interface PasswordEncoder {

	/**
	 * 加密过程
	String encode(CharSequence rawPassword);

	/**
	 * 判断密码是否正确
	 */
	boolean matches(CharSequence rawPassword, String encodedPassword);
}

其中encode方法是加密过程,matches方法用于判断用户登录时输入的密码是否正确

在这里插入图片描述
可以看到SpringSecurity提供了很多的实现类,方便各种加密方式,也可以自己实现PasswordEncoder接口,重写以上两种方法,实现自定义的加密以及匹配模式

SpringSecurity官方推荐使用BCryptPasswordEncoder加密方式,其主要是通过限制算法的速度,让暴力穷举破解无法承受

三、BCrypt加密方式实现

主要是在Security的配置文件中修改

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(myUserDetailService).passwordEncoder(new BCryptPasswordEncoder(12));
}

因为数据库之前存的是明文密码,加密方式更改之后,数据库中的密码必须改为BCrypt加密方式,这里提供一个123456加密后的密码$2a121212u5fGdlQBp7PjHz1.j0gbD.S8wjeeiY6ftVg8S9I9KYKOEuKpQEIyG,存入数据库后。

启动应用,输入用户名和密码,即可成功登录
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值