(转)Acegi 各种加密方式详解

Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。
只需要在DAO的认证管理器中分别加入一下对应一下配置:
第一种:不使用任何加密方式的配置

Java代码
  1. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  2.     <property name="userDetailsService" ref="userDetailsService" />   
  3.   
  4.     <!-- 明文加密,不使用任何加密算法, 在不指定该配置的情况下,Acegi默认采用的就是明文加密 -->   
  5.     <!--   
  6.     <property name="passwordEncoder">   
  7.         <bean class="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder">     
  8.                 <property name="ignorePasswordCase" value="true"></property>     
  9.         </bean>   
  10.     </property>   
  11.     -->   
  12. </bean>  


第二种:MD5方式加密

Java代码
  1. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  2.     <property name="userDetailsService" ref="userDetailsService" />   
  3.   
  4.     <property name="passwordEncoder">   
  5.         <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">   
  6.             <!-- false 表示:生成32位的Hex版, 这也是encodeHashAsBase64的, Acegi 默认配置; true  表示:生成24位的Base64版 -->   
  7.             <property name="encodeHashAsBase64" value="false" />   
  8.         </bean>   
  9.     </property>   
  10. </bean>  


第三种:使用MD5加密,并添加全局加密盐

Java代码
  1. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  2.     <property name="userDetailsService" ref="userDetailsService" />   
  3.   
  4.     <property name="passwordEncoder">   
  5.         <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">   
  6.             <property name="encodeHashAsBase64" value="false" />   
  7.         </bean>   
  8.     </property>   
  9.   
  10.     <!-- 对密码加密算法中使用特定的加密盐及种子 -->   
  11.     <property name="saltSource">   
  12.         <bean class="org.acegisecurity.providers.dao.salt.SystemWideSaltSource">   
  13.             <property name="systemWideSalt" value="acegisalt" />   
  14.         </bean>   
  15.     </property>   
  16. </bean>  


第四种:使用MD5加密,并添加动态加密盐

Java代码
  1. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  2.     <property name="userDetailsService" ref="userDetailsService" />   
  3.   
  4.     <property name="passwordEncoder">   
  5.         <bean class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">   
  6.             <property name="encodeHashAsBase64" value="false" />   
  7.         </bean>   
  8.     </property>   
  9.   
  10.     <!-- 对密码加密算法中使用特定的加密盐及种子 -->   
  11.     <property name="saltSource">   
  12.         <!-- 通过动态的加密盐进行加密,该配置通过用户名提供加密盐, 通过UserDetails的getUsername()方式 -->   
  13.          <bean class="org.acegisecurity.providers.dao.salt.ReflectionSaltSource">   
  14.             <property name="userPropertyToUse" value="getUsername" />   
  15.          </bean>   
  16.     </property>   
  17. </bean>  


第五种:使用哈希算法加密,加密强度为256

Java代码
  1. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  2.     <property name="userDetailsService" ref="userDetailsService" />   
  3.   
  4.     <property name="passwordEncoder">   
  5.         <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">   
  6.             <constructor-arg value="256" />   
  7.             <property name="encodeHashAsBase64" value="false" />   
  8.         </bean>   
  9.     </property>   
  10. </bean>  

第六种:使用哈希算法加密,加密强度为SHA-256

Java代码
  1. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">   
  2.     <property name="userDetailsService" ref="userDetailsService" />   
  3.   
  4.     <property name="passwordEncoder">   
  5.         <bean class="org.acegisecurity.providers.encoding.ShaPasswordEncoder">   
  6.             <constructor-arg value="SHA-256" />   
  7.             <property name="encodeHashAsBase64" value="false" />   
  8.         </bean>   
  9.     </property>   
  10. </bean>  

上述配置只是在Acegi通过表单提交的用户认证信息中的密码做各种加密操作。而我们存储用户密码的时候,可以通过一下程序完成用户密码操作:

Java代码
  1. package com.brofe.acegi;   
  2.   
  3. import org.acegisecurity.providers.encoding.Md5PasswordEncoder;   
  4. import org.acegisecurity.providers.encoding.ShaPasswordEncoder;   
  5.   
  6.   
  7. public class TestPasswordEncoder {   
  8.   
  9.     public static void main(String[] args) throws Exception {   
  10.            
  11.         md5(); // 使用简单的MD5加密方式   
  12.            
  13.         sha_256(); // 使用256的哈希算法(SHA)加密   
  14.            
  15.         sha_SHA_256(); // 使用SHA-256的哈希算法(SHA)加密   
  16.            
  17.         md5_SystemWideSaltSource(); // 使用MD5再加全局加密盐加密的方式加密    
  18.     }   
  19.   
  20.       
  21.     public static void md5() {   
  22.         Md5PasswordEncoder md5 = new Md5PasswordEncoder();   
  23.         // false 表示:生成32位的Hex版, 这也是encodeHashAsBase64的, Acegi 默认配置; true  表示:生成24位的Base64版   
  24.         md5.setEncodeHashAsBase64(false);   
  25.         String pwd = md5.encodePassword("123", null);   
  26.         System.out.println("MD5: " + pwd + " len=" + pwd.length());   
  27.     }   
  28.   
  29.       
  30.     public static void sha_256() {   
  31.         ShaPasswordEncoder sha = new ShaPasswordEncoder(256);   
  32.         sha.setEncodeHashAsBase64(false);   
  33.         String pwd = sha.encodePassword("123", null);   
  34.         System.out.println("哈希算法 256: " + pwd + " len=" + pwd.length());   
  35.     }   
  36.        
  37.       
  38.     public static void sha_SHA_256() {   
  39.         ShaPasswordEncoder sha = new ShaPasswordEncoder();   
  40.         sha.setEncodeHashAsBase64(false);   
  41.         String pwd = sha.encodePassword("123", null);    
  42.         System.out.println("哈希算法 SHA-256: " + pwd + " len=" + pwd.length());   
  43.     }   
  44.        
  45.       
  46.     public static void md5_SystemWideSaltSource () {   
  47.         Md5PasswordEncoder md5 = new Md5PasswordEncoder();   
  48.         md5.setEncodeHashAsBase64(false);   
  49.            
  50.         // 使用动态加密盐的只需要在注册用户的时候将第二个参数换成用户名即可   
  51.         String pwd = md5.encodePassword("123", "acegisalt");   
  52.         System.out.println("MD5 SystemWideSaltSource: " + pwd + " len=" + pwd.length());   
  53.     }   
  54. }  
2021最全弱口令常用口令大集合 立即下载

相关推荐

实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架

Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for Spring,当前版本为 0.8.3。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。通过精心 配置Acegi安全系统能够轻松地适用于复杂的安全需求。它既能应用于WEB应用也能应用于非WEB应用。在 本文的示例程序 里,我将演示如何将Acegi应用于WEB应用程序。通过这个例子详细介绍如何配置Acegi的各个组件,同时介绍如何扩展Acegi 使其能够从数据库中读取配置信息。

Acegi 各种加密方式详解

Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。只需要在DAO的认证管理器中分别加入一下对应一下配置:第一种:不使用任何加密方式的配置 Java代码 &lt;bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenti...

y.a.l.e 248

QCM6490平台DDR测试:从QDUTT配置到眼图分析的实战指南

本文详细介绍了QCM6490平台DDR测试的全流程,从QDUTT工具安装配置到眼图分析,提供了实战操作指南和常见问题解决方案。通过具体案例分享,帮助工程师掌握DDR测试技巧,确保内存稳定性,特别适用于物联网和边缘计算设备的开发调试。

weixin_33910191的博客 458

Spring框架和Acegi安全框架介绍

1、spring   框架  Spring框架是由Open   Source开发的一个优秀的多层J2EE系统框架,它为企业级应用提供了一个非常轻量级的解决方案,大大地降低了应用开发的难度与复杂度,提高了开发的速度。  Spring框架的核心是IoC和AOP。IoC是一种设计模式,即IoC模式。IoC模式进一步降低了类之间的耦合度,并且改变了传统的对象的创建方法,实现了一种配置式

在水一方 825

海量数据 / Vastbase 深度研究笔记 v3.1

v3.1 重点修订:在 v3.0 审慎版基础上,新增“2026 新变量”章节,纳入 7 亿级定增、HTAP / 多模态时序数据库、G100 V3.0 Build 8 的 3CM+2DN 高可用补强、pgvector / V100 / AI 多模叙事,以及集成服务基因与标准软件 ARR 的拉扯。核心关注点是:Vastbase 能否把 openGauss 生态红利、数据库产品矩阵和行业交付能力,转化为可持续、可复购、低边际成本的标准软件收入。海量不是没有业务基本盘,也不是马上失血致死;客户越多,服务债越大。

喝醉酒的小白 558

PostgreSQL+PostGIS空间数据入库实战:从矢量栅格到GeoServer发布全流程

本文详细介绍了将矢量与栅格空间数据导入PostgreSQL并利用PostGIS扩展进行管理的完整流程。内容涵盖环境搭建、使用shp2pgsql和raster2pgsql工具进行数据入库、基础空间查询验证,以及最终通过GeoServer发布为地图服务的实战步骤,为构建空间数据平台提供清晰指引。

weixin_29268267的博客 289

Spring Security加密解密

我们开发时进行密码加密,可用的加密手段有很多,比如对称加密、非对称加密、信息摘要等。在一般的项目里,常用的就是信息摘要算法,也可以被称为散列加密函数,或者称为散列算法、哈希函数。这是一种可以从任何数据中创建数字“指纹”的方法,常用的散列函数有 MD5 消息摘要算法、安全散列算法(Secure Hash Algorithm)等。散列函数通过把消息或数据压缩成摘要信息,使得数据量变小,将数据的格式固定下来,然后将数据打乱混合,再重新创建成一个散列值,从而达到加密的目的。散列值通常用一个短的随机字母和数字组成的字

程序员一博 8831

ESP8266 进行HDLC解码,AX.25,APRS

/************************************************************** 函数名:aprs_wait_begin() 参 数:无 返回值:bool true=得到合法脉冲,false=未得到 说 明:等待第1个833us高脉冲,判断范围 730-930,其他忽略 ***************************************************************/ bool aprs_wait_begin(){ stati

蓝蓝的博客 1629

Spring Acegi 各种加密方式详解(转)

Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。 只需要在DAO的认证管理器中分别加入一下对应一下配置:第一种:不使用任何加密方式的配置 Java代码 &lt;bean id= "daoAuthenticationProvider"   class = "org.acegisecurity.provi...

kekezhangshao的博客 128

E2B Agent Runtime Sandbox 沙箱技术架构研究

本实现指南基于E2B的技术架构,提供了完整的基于Firecracker和Docker的Agent Runtime Sandbox后端服务实现方案。架构设计:参考E2B的分层架构,实现API层、管理层和虚拟化层Firecracker集成:深度集成Firecracker提供硬件级安全隔离完整功能:支持文件读写、shell执行、浏览器访问等核心功能生产就绪:提供Docker部署、监控、测试和安全配置可扩展性:设计支持水平扩展和高并发场景。

AI天才研究院 747

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-知识图谱制作、使用、dify集成

本文探讨了在构建本地RAG(Retrieval-Augmented Generation)系统时,如何通过引入知识图谱来增强系统的知识理解能力。传统的向量数据库和嵌入模型虽然能处理语义匹配,但无法有效捕捉知识间的关联性。知识图谱通过“实体-关系-属性”的结构化表示,能够更好地支持推理、推荐和多跳问答等高级功能。文章详细介绍了知识图谱的基本概念、制作思路,以及如何使用Neo4j图数据库进行知识图谱的构建和查询。通过实例展示了从PDF文件解析到知识图谱入库的全过程,强调了知识图谱在提升RAG系统性能中的重要作用

少说,多做 564

(转)Spring Acegi 各种加密方式详解

Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。 只需要在DAO的认证管理器中分别加入一下对应一下配置: 第一种:不使用任何加密方式的配置 Java代码 &lt;bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationPro...

xinlanzero 185

yolov11添加P2小目标检测头与添加P6超大目标检测头

本文介绍了YOLO目标检测模型中上下采样的原理及应用。上采样通过插值算法放大特征图,YOLO通常采用最近邻插值;下采样则通过带步长的卷积缩小特征图提取高层语义特征。文章详细阐述了这两种操作在YOLO中的实现方式、结构特点及对称性问题,指出下采样后会使用C3模块进行特征整合,上采样后通过concat抑制分割感。此外,还分析了不同分辨率特征图适合检测不同尺寸目标的原因,并提出添加4倍小目标检测头的方法,即对上采样后的特征进行concat和C3模块处理。最后给出了YOLOv5原模型结构和添加4倍检测头后的结构对比

m0_64661770的博客 821

Spring Acegi 各种加密方式详解

Acegi 对于密码 明文及不采用任何加密方式 MD5加密方式 哈希算法加密方式

阿永专栏 1547

新手秒变高手:使用一键脚本快速安装OpenClaw并完成初始化配置

一键脚本是一种自动化工具,可以帮助用户快速完成软件的安装和配置过程,无需手动执行繁琐的命令。OpenClaw提供了官方的一键安装脚本,让新手用户也能轻松部署OpenClaw。

一键难忘的博客 359

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring security加密方式(转)

Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。只需要在DAO的认证管理器中分别加入以下对应配置:第一种:不使用任何加密方式的配置 Java代码 &lt;bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthentication...

sinoalex 561

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Acegi 各种加密方式详解(转载)

Acegi 对于密码提供三种方式:明文及不采用任何加密方式、MD5加密方式、哈希算法加密方式。只需要在DAO的认证管理器中分别加入一下对应一下配置:第一种:不使用任何加密方式的配置 Java代码 &lt;bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticat...

soledede 182

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Acegi简介

Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。       安全涉及到两个不同的概念,认证和授权。前者是关于确认用户是否确实是他们所宣称的身份。授权则是关于确认用户是

良子 2083

对ACEGI中FilterChainProxy进行性能调优

一般情况下,在ACEGI中队filterChainProxy如下配置     bean id="filterChainProxy"           class="org.acegisecurity.util.FilterChainProxy">         property name="filterInvocationDefinitionSource">        

++黑色郁金香的Blog++ 3181

Acegi安全系统详解

 Acegi是Spring Framework 下最成熟的安全系统,它提供了强大灵活的企业级安全服务,如:    1 : 完善的认证和授权机制,    2 : Http资源访问控制,    3 : Method 调用访问控制,    4 : Access Control List (ACL) 基于对象实例的访问控制,    5 : Yale Central Authentication Servi

5488

Spring Security Acegi 学习之路三 (转)

身份认证管理     使用 Acegi 保护应用程序的第一步是根据用户提供的认证信息进行身份认证,以确定用户的身份获取对应的权限信息准备好 Authentication 。通过认证的 Authentication 拥有权限信息,它是 Acegi 进行后续安全对象访问安全控制的依据。   基于内存存储用户信息的身份认证 ...

My study notes 268

在Spring下使用Acegi通过LDAP验证

参见 http://www.ibm.com/developerworks/cn/java/j-acegi2/ 这里的Acegi主要是指:acegi-security-1.0.3 在这篇文章中,说到ApacheDS,这是一个开源的LDAP服务器,要特别注意它的端口不是389是10389 因为LDAP里面的密码是加密的,注意要加上这一句: 如果是使用microsoft的AD,它不是使用标准的LDAP

流氓猪的窝 1359

acegi流程分析之一《Acegi 中的HttpSessionEvent 监听机制 窥视Acegi的 工作流程》

先推荐一下SpringSide,写得有点乱,欢迎指正错误。msn:qian_bj@hotmail.com  Acegi 中的HttpSessionEvent 监听机制 窥视Acegi的 工作流程。 Acegi结合了Spring 提供了不错的HttpSessionEvent监听机制使用Acegi的HttpSessionEvent监听机制,我首先要在web.xml中增加一个

++黑色郁金香的Blog++ 8024
上一篇: Getting Started with Sencha Touch
下一篇: (转)Spring Acegi 各种加密方式详解
xinlanzero
博客等级 码龄25年 10粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值