Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >spring security 如何对密码进行加密

spring security 如何对密码进行加密

作者头像
程序员朱永胜
发布于 2024-01-07 02:35:21
发布于 2024-01-07 02:35:21
51700
代码可运行
举报
运行总次数:0
代码可运行

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

Spring Security 密码加密

Spring Security 提供了多种密码加密方式,来保护应用程序中用户的密码。以下是通过「PasswordEncoder」接口来对密码进行加密的常用方法。

「BCryptPasswordEncoder」

「BCryptPasswordEncoder」使用BCrypt强散列方法存储密码。BCrypt是根据Blowfish密码算法实现的,它可以自动生成盐(salt)来与密码结合,增加破解难度。

「基本配置」
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.context.annotation.Bean;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}

使用@Bean修饰passwordEncoder方法,可以在Spring容器中注册一个「PasswordEncoder」的bean实例,并使用「BCryptPasswordEncoder」作为实现。

「密码加密」
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Autowired
private PasswordEncoder passwordEncoder;

public void createUserAccount(String username, String rawPassword) {
    String encodedPassword = passwordEncoder.encode(rawPassword);
    // 存储用户名和加密后的密码到数据库等
}

当创建用户账号时,你需要先对原始密码进行加密,然后将加密后的结果存储起来。

「配置Spring Security使用PasswordEncoder」
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private PasswordEncoder passwordEncoder;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
            .passwordEncoder(passwordEncoder)
            .withUser("user")
            .password(passwordEncoder.encode("password"))
            .roles("USER");
    }
}

WebSecurityConfig配置类中,你需要确保Spring Security使用你配置的「PasswordEncoder」

其他PasswordEncoder实现

Spring Security还提供了其他几种PasswordEncoder的实现,包括:

  • 「NoOpPasswordEncoder」:它不对密码进行任何操作,即明文存储,不建议使用。
  • 「Pbkdf2PasswordEncoder」:使用PBKDF2算法加密。
  • 「SCryptPasswordEncoder」:使用scrypt散列算法。
  • 「StandardPasswordEncoder」:使用SHA-256散列算法。

结论

通过使用Spring Security中的「PasswordEncoder」,你可以有效地提高应用程序中密码的安全性。「BCryptPasswordEncoder」是一个广泛使用并且被认为非常安全的选项。在实现时,「PasswordEncoder」提供了一个标准方式,使得应用可以轻松地更改所使用的具体密码编码策略。

本文由 mdnice 多平台发布

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring security 同时支持多种加密方式
参考文章:http://www.javaboy.org/2020/0618/passwordencoder.html
heasy3
2021/03/03
7810
Security实现密码加密处理
根据上面 PasswordEncoder的介绍,可能会以为 Spring security 中默认的密码加密方案应该是四种自适应单向加密函数中的一种,其实不然,
用户11097514
2024/05/30
3200
重学SpringBoot3-集成Spring Security(二)
在上一节中,我们讨论了Spring Security 的认证功能,通过实现用户身份验证来确保系统的安全性。而在本节中,我们将深入了解授权机制,如何控制用户在系统中可以访问的资源和操作。
CoderJia
2024/10/18
4310
重学SpringBoot3-集成Spring Security(二)
Spring security笔记2/4: 自定义用户信息
重命名 Case1Application.java 为 Case2Application.java
tonglei0429
2019/09/09
8170
Spring Security 多种加密方案共存,老破旧系统整合利器!
松哥给最近连载的 Spring Security 系列也录制了视频教程,感兴趣的小伙伴请戳这里->Spring Boot+Vue+微人事视频教程(Spring Boot 第十章就是 Spring Security)。
江南一点雨
2020/06/24
1.3K0
【Spring Security】003-Spring Security web权限方案(1):用户认证
在resources目录下创建static目录,并创建login.html,name必须是username和password;
訾博ZiBo
2025/01/06
1210
【Spring Security】003-Spring Security web权限方案(1):用户认证
Spring Security灵活的PasswordEncoder加密方式
本章基于Spring Security 5.4.1版本编写,从5.x版本开始引入了很多新的特性。 为了适配老系统的安全框架升级,Spring Security也是费劲了心思,支持不同的密码加密方式,而且根据不同的用户可以使用不同的加密方式。
恒宇少年
2020/10/29
11.5K0
松哥手把手带你入门 Spring Security,别再问密码怎么解密了
无论如何我也得写一篇文章,带大家入门 Spring Security!当我们在一个项目中引入 Spring Security 相关依赖后,默认的就是表单登录,因此我们就从表单登录开始讲起。
江南一点雨
2020/03/27
1.1K0
Spring Boot 3 集成 Spring Security(1)认证
Spring Security 是一个强大、灵活的安全框架,广泛用于保护 Java 应用程序。随着 Spring Boot 3 和 Java 17 的引入,Spring Security 继续增强其功能,为开发者提供了更简化的配置和现代化的安全实践。
Harry技术
2025/01/11
2440
Spring Boot 3 集成 Spring Security(1)认证
重学SpringBoot3-集成Spring Security(一)
Spring Security 是一个强大、灵活的安全框架,广泛用于保护 Java 应用程序。随着 Spring Boot 3 和 Java 17 的引入,Spring Security 继续增强其功能,为开发者提供了更简化的配置和现代化的安全实践。
CoderJia
2024/10/18
1.4K0
重学SpringBoot3-集成Spring Security(一)
重学SpringBoot3-集成Spring Security(四)
在现代应用开发中,安全性和数据管理是两大重要模块。Spring Security 提供了全面的安全解决方案,而 Spring Data JPA 则简化了与数据库的交互。将两者结合,可以在保护应用的同时,轻松实现基于用户身份的访问控制、权限管理和安全的数据存储操作。
CoderJia
2024/10/20
4270
重学SpringBoot3-集成Spring Security(四)
Spring security笔记3/4: 自定义登录页面
重命名 Case2Application.java 为 Case3Application.java
tonglei0429
2019/09/09
1.1K0
Spring security笔记3/4: 自定义登录页面
Spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches)
用户1212940
2022/04/13
3.8K0
最安全的加密算法 Bcrypt,再也不用担心数据泄密了~
哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。
码猿技术专栏
2023/05/01
4.8K0
最安全的加密算法 Bcrypt,再也不用担心数据泄密了~
SpringSecurity入门案例——基本功能讲解
简介:本文讲解,SpringSecurity的快速入门案例,主要讲解基本功能,其他拦截器,与jwt的结合在后面的文章中讲解。
GeekLiHua
2025/01/21
2010
SpringSecurity入门案例——基本功能讲解
springboot+security 内存中读取账号密码 自定义加密规则
码云地址:https://gitee.com/huatao1994/springbootSecurity/tree/master
用户5899361
2020/12/07
5120
springboot+security  内存中读取账号密码 自定义加密规则
【Spring Security】002-Spring Security基本原理:过滤器链、过滤器加载过程、UserDetailsService接口、PasswordEncoder接口
super.beforeInvocation(fi);//表示查看之前的 filter 是否通过;
訾博ZiBo
2025/01/06
1730
【Spring Security】002-Spring Security基本原理:过滤器链、过滤器加载过程、UserDetailsService接口、PasswordEncoder接口
Spring Security 入门(一)Spring Security中的认证与密码编码器
Spring Security是一个提供认证(authentication)、授权(authorization)和防御各种Web攻击的框架,它对命令式和反应式应用程序都提供了一流的支持,是保护基于spring的应用程序的事实标准。
用户3587585
2022/09/21
1.9K0
SpringBoot Security密码加盐
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2022/12/25 01:41
IT小马哥
2022/12/25
1.2K0
认证鉴权与API权限控制在微服务架构中的设计与实现:升级
在之前的系列文章认证鉴权与API权限控制在微服务架构中的设计与实现中,我们有四篇文章讲解了微服务下的认证鉴权与API权限控制的实现。当时基于的Spring Cloud版本为Dalston.SR4,当前最新的Spring Cloud版本为Finchley.SR1,对应的Spring Boot也升级到了2.0.x。Spring Cloud版本为Finchley和Spring Boot2.0相对之前的版本有较大的变化,至于具体的changes,请参见官网。本次会将项目升级到最新版本,下面具体介绍其中的变化。与使用之前的版本,请切换到1.0-RELEASE。
aoho求索
2018/10/09
1K0
认证鉴权与API权限控制在微服务架构中的设计与实现:升级
推荐阅读
相关推荐
Spring security 同时支持多种加密方式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验