spring security3 使用自定义MD5或者其他加密规则

Spring Security密码安全:BCrypt加密机制深度解析与生产实践 在Web应用安全体系中,密码存储是身份认证的基石。传统哈希算法(如MD5、SHA-256)因计算速度过快,易受彩虹表和GPU暴力破解攻击。为此,现代密码学引入了“慢哈希”和“盐值”概念,通过故意增加计算成本来大幅提升破解难度。BCrypt正是这一理念的杰出代表,它作为自适应哈希函数,通过可配置的“工作因子”调节计算迭代次数,在安全性与性能间取得最佳平衡。其生成的密文结构(如$2a$10$...)自包含算法版本、成本因子、随机盐和哈希结果,确保了即使密码相同,哈希值也完全不同,有效抵御批量破解。在Java生态 阅读详情

首先看下sping security的xml配置:

    <!-- 替换user-service-ref方式的AuthenticationProvider -->
    <bean id="myAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    	<property name="userDetailsService" ref="myUserDetailService"></property>
    	<!-- 默认为true隐藏后台正常的异常 -->
    	<property name="hideUserNotFoundExceptions" value="false"></property>
    	<!-- 使用MD5加密-->
    	<property name="passwordEncoder" ref="md5PasswordEncoder"></property>
    	<!-- 登录账号做为盐值,username为org.springframework.security.core.userdetails.User属性 -->
		<!--
		<property name="saltSource">
    		<bean class="org.springframework.security.authentication.dao.ReflectionSaltSource">
    			<property name="userPropertyToUse" value="username"></property>
    		</bean>
    	</property>
    	-->
    </bean>

下面这个是spring本身的加密规则和定义了一个自身的加密规则:

    <!-- 用户的密码加密或解密 
	<bean id="md5PasswordEncoder" class="org.springframework.security.authentication.encoding.Md5PasswordEncoder"></bean>
	-->
	<!-- 可定义自己的加密规则 -->
	<bean id="md5PasswordEncoder" class="com.ruizhisoft.framework.security.MyPasswordEncoder"></bean>

spring源码的代码就不贴了,下面贴下自己的加密规则(可实现多个加密规则于一身),首先要继承上面源码的那个类(org.springframework.security.authentication.encoding.Md5PasswordEncoder),然后重写isPasswordValid()方法,返回true就是验证通过,false即为验证不通过!

    public boolean isPasswordValid(String encPass, String rawPass, Object salt) {
		boolean flag = false;
		if(StringUtils.isNotBlank(MD5_CLASS) && MD5WithSalt.equals(MD5_CLASS)){//MD5WithSalt,这个加密方式
			flag = com.ruizhisoft.framework.security.utils.MD5WithSalt.verify(rawPass, encPass);
		}else{//MyMd5PasswordEncoder,这个加密方式
			flag = com.ruizhisoft.framework.security.utils.MyMd5PasswordEncoder.verify(encPass, rawPass, null);
		}
		return flag;
    }

Spring Security OAuth2授权服务器搭建与密码加密实战 在分布式系统和微服务架构中,身份认证与授权是保障应用安全的核心机制。OAuth 2.0作为行业标准授权框架,通过分离客户端、资源所有者和资源服务器角色,实现了安全的第三方资源访问。其核心原理是基于令牌(Token)的访问控制,替代传统的密码共享模式,大幅提升了系统的安全性和可维护性。从技术价值看,OAuth 2.0不仅简化了多端登录的统一管理,还支持细粒度的权限控制(Scope),为现代应用提供了灵活的安全基础设施。典型的应用场景包括单点登录(SSO)、API开放平台和微服务间的安全调用。本文聚焦于**密码 阅读详情

相关推荐

Day47_Spring Security—Spring Security的微服务使用

(2)基于 token,(token就是按一定规则生成的包含用户信息的字符串),基于 Session则是解析出 token,然后将当前请求加入到 Spring-security 管理的权限信息中去。这是SpringSecurity微服务中最常用的方式。上面授权的时候,把用户信息放入权限的上下文SecurityContextHolder中,那么后面就可以你可以通过SecurityContextHolder来获取当前的安全上下文,并从中获取Authentication对象,进而获取用户信息。

weixin_45014721的博客 3480

SpringSecurity中使用MD5密码加密

前言: 在上一篇中说到了SpringSecurity中的表单验证和权限控制,接下来说一下如果你在SpringSecurity中不使用默认的加密方式,而是使用自定义的加密方式,比如MD5,该如何继承呢? 一、为什么使用加密 我们先来说一下使用加密后的密码处理流程。我们为什么要使用密文呢?也就是加密后的密码呢?如果一个用户在网站注册时写入的密码是123456,当他点击保存之后,如果不加密的话,在...

润青 1万+

Spring Security BCrypt密码加密原理、配置与生产环境最佳实践

在用户认证与系统安全领域,密码的安全存储是基石。其核心原理在于使用单向哈希函数对用户密码进行处理,确保即使数据泄露,原始密码也难以被还原。为了对抗彩虹表攻击和暴力破解,现代密码存储技术引入了盐值和工作因子等关键机制,通过增加计算成本来大幅提升破解难度。这为系统提供了强大的安全价值,是保护用户数据的第一道防线。在Java生态中,Spring Security框架集成了BCrypt这一自适应哈希算法,它通过内置盐值和可配置的工作因子,成为当前密码存储的事实标准。本文聚焦于BCrypt在Spring Securi

weixin_33766805的博客 307

Java实现MD5加密解密类

MD5  加密解密类: package com.xl.test.md5; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom

1516

认证、授权攻略三(4)、spring security数据库认证JdbcDaoImpl(密码加密)

上一篇:【认证、授权攻略三(3)、spring security核心类】 spring-security.xml配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2...

java爱分享 790

手把手教你用BQ Studio给BQ40Z50电量计“做体检”:从Golden Learning到精度验证的全流程实操

本文详细介绍了如何使用BQ Studio对BQ40Z50电量计进行全流程调试,从Golden Learning到精度验证。通过硬件连接、参数配置和优化技巧,帮助工程师提升电池管理系统的精度和性能,适用于BMS开发和电量计校准的实际应用场景。

weixin_30824599的博客 451

java security md5_Java 实现MD5加密

packagecom.cn.peitest;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;public classMD5 {public static voidmain(String[] args) {String md5=getMD5("pei123456", 20);System.o...

weixin_31141099的博客 281

华为IC岗笔试刷题含答案(2)

又做了几套题,记录了部分及答案,如有错误,欢迎评论指正。

Ingrid的博客 1万+

SpringSecurity使用MD5+盐值加密

1、自定义PasswordEncoder public class MD5PasswordEncoder implements PasswordEncoder { @Override public String encode(CharSequence rawPassword) { return MD5Util2.encode((String) rawPassword); } @Override public boolean matches(CharS

laionly的博客 2379

Sentaurus TCAD学习——Scheme编程语言

sentaurus scheme语言学习记录

摸摸小熊猫的博客 967

ks-快手滑块验证码-Js逆向

本文分析了快手滑块验证码的破解过程。首先通过抓包找到验证码背景图接口,发现需要动态获取captchaSession参数。然后深入分析验证流程,发现verifyParam参数被加密处理,需要追踪其生成逻辑。文章详细解析了加密参数c的构成,包括captchaSn、滑动距离、轨迹信息等,并指出轨迹验证较为严格。最后通过对比浏览器和本地生成的加密值,确认加密逻辑正确,但指出轨迹生成仍需优化。作者建议参考相关文章深入分析轨迹逻辑,并提供了验证成功的截图作为参考。

2302_76420666的博客 1879

RuoYi SpringSecurity使用MD5加密用户密码

***/@Component/*** 自定义MD5 加密*/@Autowired@Autowired/*** 自定义验证方式*/@Override//获取用户输入的用户名和密码//通过获取的用户名,得到userDetails对象//加密过程在这里体现,明文,密文if (!@Override> arg0) {实现加密|解密处理@Component@Override@Override/*** 身份认证接口*/@Override。

勋味十足 1530

将Apollo高精地图中的车道线叠加在多种导航地图上

本文介绍了将Apollo高精地图车道线叠加到普通导航地图的技术方案。高精地图具备厘米级车道精度和丰富的语义信息,叠加可实现可视化验证、调试分析和数据对比等功能。核心技术包括坐标系统转换(UTM/WGS84/BD09/GCJ02)和数据处理流程,通过Python脚本完成Apollo地图解析、坐标批量转换和多格式输出。文章详细提供了环境准备、工作目录创建和坐标转换脚本等操作步骤,实现了高精地图数据在OpenStreetMap、百度地图和高德地图上的可视化展示。

Hi20240217的博客 1336

Spring Security- 自定义密码加密规则与加密算法

Spring Security 自定义密码加密规则与加密算法 摘要 本文深入探讨Spring Security中的密码加密机制,重点讲解如何自定义密码加密规则与算法。密码安全是Web应用的第一道防线,需避免明文存储风险,采用哈希函数结合盐值的安全方案。 Spring Security通过PasswordEncoder接口提供密码加密抽象,支持多种内置实现如BCrypt、SCrypt等算法。其中BCryptPasswordEncoder最常用,它内置盐值生成且计算成本可调。 文章详细演示了如何实现自定义Pas

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

某城商银行生产容器云平台详细设计方案分享及经验总结

AS3模式的CIS容器部署在K8S集群内,作为F5的控制器,CIS容器通过对K8S集群内Configmap资源进行监控,将Configmap资源中的内容转化为F5的配置,将配置推送给 F5 ,CIS容器还通过K8S标准的API接口完成业务发现和实时监听集群内Pod的变化,一旦Pod发生变化,相应的更新会及时推送给F5,并完成更新。容器技术发展非常迅速,现在应用大多以容器作为承载介质,前两年在容器云上承载的应用类型主要是Web类,随着容器云领域的不断发展,越来越多的应用类型将迁移至容器云,包括有状态应用。

qq_61890005的博客 858

AgentScope Java 2.0 项目实战: 从零构建自己的个人AI助手“小龙虾“

本文系统介绍如何基于Spring Boot WebFlux、React 18和TypeScript,从零搭建一个本地化的个人AI助手管理平台——AgentScope Paw。项目支持多Agent创建与管理、SSE流式对话、工作区文件CRUD、技能市场、子智能体孵化、AI辅助起草Agent配置等核心功能,并深度集成钉钉、企业微信、飞书、GitHub等IM通道。

program哲学 1430

spring-security密码加密(推荐)和MD5密码加密

一、spring-security加密 引入security依赖 <properties> <!--安全框架版本号--> <spring.security.version>5.0.2.RELEASE</spring.security.version> </properties> <!-- 安全框架 --...

q_2540638774的博客 2406

微调大模型如何准备数据集——常用数据集,Alpaca和ShareGPT

在大模型微调中,我们一般使用Alpaca 和 ShareGPT和两种格式的数据集。

Science prince的博客 1097

SpringBoot——Security自定义登录界面、密码进行加密

一、自定义登录界面 1、重写官方的配置,创建一个SecurityConfig类 @Configuration @EnableGlobalMethodSecurity(prePostEnabled = true)//开启方法安全级别的控制 public class SecurityConfig extends WebSecurityConfigurerAdapter{ //自定义密码加密 @Bean public PasswordEncoder passwordEncoder() {

ZHANGDANDAN04的博客 1407

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Spring Security】从入门到精通

内附经典案例详解~~

Le vent se lève, il faut tenter de vivre 2407

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringSecurity框专题(七) - 自定义加密

文章目录1.MD5加密工具类2.自定义加密器3.修改 security 配置文件 虽然 spring security 已经提供了比较完善的加密机制,但是有时根据业务需求需要定制自己的加密方式。 spring security 提供了加密扩充的接口,下文主要介绍如何在 spring security 中添加自定义的加密器。 1.MD5加密工具类 package com.bruce.utils; import java.security.MessageDigest; /** * @program: St

刘树之的博客 1223

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Spring】Spring Security自定义密码登录

Spring Security 是一个开箱即用的权限认证框架,支持多种登录方式。本文介绍了如何自定义密码登录功能

qq_45797138的博客 1082

TZ_10_常用的2中加密算法MD5,spring-sucrity

1.MD5   在注册时需要进行加密,在登陆时也需要加密进行配对 public class MD5util { public static String stringToMD5(String psd) { byte[] secretBytes = null; try { ...

weixin_30297281的博客 181

Java MD5 加密技术深度解析:原理、实现与安全实践

MD5 作为经典哈希算法,虽因碰撞风险退出安全认证领域,但其高效性和固定输出特性仍适用于非安全性场景:文件校验、数据完整性验证、缓存键生成等。轻量级需求:Apache Commons Codec 的平衡简洁性与性能。安全场景:坚决迁移至 BCrypt、PBKDF2,避免使用 MD5 存储密码或签名。历史系统:通过加盐、迭代哈希(如 MD5 (MD5 (password+salt)))降低风险,逐步过渡至强算法。

zqmgx13291的博客 1018

电商系统密码安全:Java MD5加密实战解析

加盐MD5加密是一种简单有效的密码存储方案,适合大多数中小型电商系统。对于更高安全要求的场景,可以考虑使用更先进的加密算法(如bcrypt或PBKDF2)。在实际操作中,我发现InsCode(快马)平台提供的代码生成和部署功能非常便捷,能够快速验证加密逻辑的正确性。平台的一键部署功能尤其适合演示和测试,无需手动配置环境,大大提升了开发效率。希望这篇实战解析能帮助你在电商系统中实现更安全的密码存储方案。如果有任何问题,欢迎在评论区交流!

EmeraldEagle36的博客 1054

Spring Security 安全认证

Spring Security 动态配置用户以及加密算法

Demo_Null 1093
上一篇: Linux中telnet客户端与服务端的安装与配置(yum安装)
Java_Mr_Zheng
博客等级 码龄11年 18粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值