Spring Security--密码加密

简介: 密码加密

项目的话,我们是继续写的,此时项目是已经实现了数据库的用户名,密码登录,且用的是自己的登录页面。

密码加密我们用到这PasswordEncoder这个接口

public interface PasswordEncoder {
    String encode(CharSequence rawPassword);
    boolean matches(CharSequence rawPassword, String encodedPassword);
    default boolean upgradeEncoding(String encodedPassword) {
        return false;
    }
}

image.gif

这个接口就三个方法

第一个encode方法:加密的方法,返回的String就是加密之后的字符串

第二个matches方法:密码比对的方法,rawPassword是明文密码,encodedPassword是加密后的密码,你把这来个参数传进来,它会自动帮你比对,然后放回一个boolean值

第三个upgradeEncoding方法:是说加密方案是否需要升级

首先我们可以看看这个这个接口的实现类(alt+h)

image.gif

其中MessageDigestPasswordEncoder就是md5了

常用的还有BCryptPasswordEncoder,

BCryptPasswordEncoder方法采用了SHA-256+随机盐+密钥对密码进行加密。

class SecurityDemoApplicationTests {
    /**
     * security中密码自带盐
     */
    @Test
    void contextLoads() {
        BCryptPasswordEncoder B = new BCryptPasswordEncoder();
        for (int i = 0; i < 10; i++){
            System.out.println(B.encode("123"));
        }
    }
}

image.gif

我们使用这个方法对123进行加密,得到

image.gif

可以设置密码的强度 4-31的数字,数字越大,密码强度越高,所需要的时间就越久 可以防止有人频繁去试密码,我们比对的时间会更长。

在spring security中默认使用的加密方法是

image.gif

全局搜索一个PasswordEncoderFactories

这个类是干嘛的呢,大家可以自己点开看看,里面初始化了一个DelegatingPasswordEncoder

对象,这里是把所有的加密方式都写出来了,匹配你的密码的加密方式,默认是”bcrypt“

image.gif

这里记录一个密码升级的方法

先在UserService里实现一个UserDetailsPasswordService方法

里面有这么一个方法

image.gif

当用户登录之后,这个方法会自动判断用户密码是否需要升级

判断依据是:

1.这个用户的密码加密方案是否是当前默认的方案。

2.同一种加密方案也可以升级的不同强度

image.gif

image.gif

在登录成功后密码从原本的

image.gif

改为

image.gif

也就是默认的加密方式。

image.gif

也可以修改默认的加密方式

image.gif

以上就是密码的加密与更新。

相关文章
|
9天前
|
安全 Java 数据安全/隐私保护
|
13天前
|
安全 Java API
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)
34 0
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
|
13天前
|
存储 安全 前端开发
第6章 Spring Security 的 Web 安全性(2024 最新版)(上)
第6章 Spring Security 的 Web 安全性(2024 最新版)
47 0
|
13天前
|
安全 Java Go
第6章 Spring Security 的 Web 安全性(2024 最新版)(下)
第6章 Spring Security 的 Web 安全性(2024 最新版)
33 1
|
12天前
|
存储 安全 Java
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)(下)
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)
20 2
|
12天前
|
安全 Cloud Native Java
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)(上)
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)
24 2
|
12天前
|
存储 安全 Java
第9章 Spring Security 的测试与维护 (2024 最新版)(下)
第9章 Spring Security 的测试与维护 (2024 最新版)
20 1
|
12天前
|
安全 Java 测试技术
第9章 Spring Security 的测试与维护 (2024 最新版)(上)
第9章 Spring Security 的测试与维护 (2024 最新版)
21 0
|
12天前
|
缓存 Java 数据库
第8章 Spring Security 的常见问题与解决方案(2024 最新版)(下)
第8章 Spring Security 的常见问题与解决方案(2024 最新版)
23 0
|
12天前
|
安全 Java 数据安全/隐私保护
第8章 Spring Security 的常见问题与解决方案(2024 最新版)(上)
第8章 Spring Security 的常见问题与解决方案(2024 最新版)
32 0