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

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

相关文章
|
2月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
711 10
|
3月前
|
人工智能 安全 Java
Spring Boot yml 配置敏感信息加密
本文介绍了如何在 Spring Boot 项目中使用 Jasypt 实现配置文件加密,包含添加依赖、配置密钥、生成加密值、在配置中使用加密值及验证步骤,并提供了注意事项,确保敏感信息的安全管理。
802 1
|
7月前
|
编解码 安全 Java
如何在Spring Boot中实现数据加密
本文介绍了如何在Spring Boot中实现数据加密。首先阐述了数据加密的重要性与应用场景,接着讲解了对称加密和非对称加密的原理及区别。通过添加依赖、配置加密算法、编写加密工具类等步骤,展示了具体实现方法,并在业务代码中应用加密技术保护敏感数据。希望对开发者有所帮助。
536 7
|
8月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
799 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
12月前
|
存储 安全 Java
|
12月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
258 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
缓存 安全 算法
Spring Security OAuth 2.0 资源服务器— JWT
Spring Security OAuth 2.0 资源服务器— JWT
1038 1
|
设计模式 安全 NoSQL
从零开始的Spring Security Oauth2(一)
从零开始的Spring Security Oauth2(一)
6826 3
从零开始的Spring Security Oauth2(一)
|
JSON 安全 Java
再见,Spring Security OAuth!!
本次将 《Spring Authorization Server》项目正式上线,去掉了之前的体验状态,此举恰逢 0.2.0 版本发布,这也是第一个正式支持的生产就绪版本。
再见,Spring Security OAuth!!
|
JSON 安全 Java
Spring Security OAuth 实现 GitHub 快捷登录
Spring Security 5中集成了OAuth的客户端模块,该模块包含以下三个子模块
Spring Security OAuth 实现 GitHub 快捷登录