前言
使用springboot开发项目的时候,对于登录功能,我们都会对用户的密码进行一个加密,以保证对用户账号的安全性做保障,接下来我将演示如何使用SpringSecurity对密码进行加密
在演示SpringSecurity的加密之前,首先看一下spring本身提供的md5的加密的方式
@Test
public void test(){
//md5加密
String password = DigestUtils.md5DigestAsHes("123456".getBytes());
System.out.println(password);
//加密后的密码 :E10ADC3949BA59ABBE56E057F20F883E
}
这样得到的密码虽然一般人都看不懂,但是及其容易破解,只需要访问MD5解密即可将这个加密的密码破解,安全性不高
为了解决md5加密的安全性问题,加盐对于md5加密是比不可少的
何谓加盐?
密码加盐里包含随机值和加密方式。随机值是电脑随机产生的,并且以随机的方式混在原始密码里面,然后按照加密方式生成一串字符串保存在服务器。然后讲盐值存储到数据库中,若需要登录,则还要从数据库中取出加盐字段和密码一起进行破解
由于md5加密的不安全和加盐的繁琐,SpringSecurity提供了更加安全且便捷的方式对密码进行加密
使用SpringSecurity,就需要导相关依赖
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
</dependency>
@Test
public void test(){
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String password = passwordEncoder.encode("123456");
}
使用该方法对密码进行加密,很难进行破解,因为该方法已经自动加盐,并且提供了自动解密的方法
@Test
public void test(){
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
boolean matchs = passwordEncoder.matchs("123456",//数据库中取出的已经加密的密码);
//若返回值为true,则密码正确,若为false,则错误
}
SpringSecurity简化了密码的加密方式,并且也大大的提高了安全性