今天又看了下acegi,学习就是这样,不断重复啊。
一次有一次的收获。
今天解决问题:密码加密!
描述:用户注册时,插入数据库中的密码是加密的。这个加密函数如何写?
解决方法:
大家都知道ACEIG的认证:daoAuthenticationProvider
判断Authentication.getCredentials()与UserDetails.getPassword
getCredentials取得登陆界面的输入密码
getPassword取得数据库中的密码
在认证的时候,XML的配置了
<property name="passwordEncoder">
<bean class="org.acegisecurity.providers.encoding.MD5PasswordEncoder">
</property>
<property name="saltSource">
<bean class="org.acegisecurity.providers.dao.salt.SystemWideSaltSource">
<property name="systemWideSalt" value="aaa">
</property>
这个只是把你输入的密码进行加密。
但是在注册的时候得先知道这个加密过程,以及加密的实现。不然,两个密码也不equal
这个看看acegi的源码就可以得到实现的方法
其实acegi的实现也是通过javax.security.MessageDigest。
首先确定是哪种加密方式
MD5,SHA等。。
MessageDigest m = MessageDigest.getInstance("MD5");
接着判断,是用怎么样的编码函数对密码摘要编码。
Hex,Base64
如果在XML中没有配置,就默认用HEX
Hex.encode(m.digest(rewPass.getBytes()));
咦,怎么没有用到加密盐,刚忘了,在PasswordEncoder的encodePassword(String rawPass,Object salt)中得到的salt就是XML中systemWideSalt的值。
加密盐其实是加密种子,它是与原始密码一起加密运算的。
上面的Hex.encode(m.digest(rewPass.getBytes()))应该这样写
Hex.encode(m.digest((rewPass+salt).getBytes()))
现在一切清楚了。
加密方法也出来了。
public static String toMD5(String rawPass ){
rawPass +="{eastjava1995}";//{eastjava1995} is salt,mapping the xml file
String encPass = null;
try{
MessageDigest md5=MessageDigest.getInstance("MD5");
encPass = new String(Hex.encodeHex(md5.digest(rawPass.getBytes())));
}catch(Exception e){
e.printStackTrace();
}
return encPass;
}
分享到:
相关推荐
4. **加密**:在存储和传输敏感数据(如密码)时,Acegi提供加密服务。它使用安全哈希函数和盐值来加密密码,确保即使数据被窃取,也无法轻易解密。 5. **缓存**:Acegi可以集成缓存机制,如 EhCache 或者其他的...
为了保护用户凭证,Acegi支持多种密码加密策略,如MD5、SHA等,确保存储在数据库中的密码安全。 5. **自定义安全组件**: Acegi的灵活性体现在允许开发者自定义安全组件,如认证Provider、权限Evaluator等,以...
这一步骤通过JAVA keytool生成并配置证书实现,确保了通信数据的加密传输,增加了系统的安全性。 #### CAS Server 3.04与Acegi Security 1.0RC2的配置 具体步骤包括使用keytool生成Tomcat使用的证书、导出证书到...
《Acegi Security 1.0.7:Spring框架的安全认证组件深度解析》 Acegi Security是Spring框架的一个扩展,专为Java企业级应用提供安全认证和授权服务。它在Spring框架的基础上构建了一套完整的安全解决方案,使开发者...
此外,Acegi Security还支持密码加密、会话管理、CSRF防护等功能。通过这个教程,开发者不仅可以了解Acegi Security的基本用法,还能深入理解Web应用安全的原理和实践。 总的来说," Acegi-security-samples-...
因此,应使用足够强度的加密算法对Remember Me令牌进行加密,并设定合理的过期时间,避免长时间记住用户身份。 在Acegi Security的源码中,可以深入理解这些组件的工作原理,了解如何实现和自定义它们。对于工具类...
5. **密码加密与存储**:Acegi Security支持多种密码哈希算法,确保密码在存储时的安全性,防止因数据泄露导致密码明文暴露。 6. **异常处理**:框架内建了统一的异常处理机制,当出现安全相关的异常时,如认证失败...
Acegi Security是Spring框架早期的一个安全模块,它提供了一套全面的访问控制和服务验证机制。在本Demo中,我们将深入探讨如何使用Acegi实现Basic认证,这是一种常见的HTTP身份验证方法,适用于简单的应用场景。 ...
**Spring ACEGI安全框架简介** Spring ACEGI是Spring Security的前身,它是一个强大的、高度可配置的安全框架,专为Java企业级应用设计。这个框架旨在提供全面的身份验证、授权和服务层安全功能,允许开发者轻松地...
Acegi Security是一个已退役的安全框架,它在Java社区中曾被广泛使用,特别是在Spring Framework早期版本中,作为提供身份验证和授权服务的重要组件。Acegi Security后来被Spring Security所吸收和替代,后者现在是...
- Spring - Java - JavaEye论坛.mht"则可能专注于Acegi的认证过程,这包括用户登录、密码加密、以及不同类型的认证机制,如基于内存的认证、JDBC认证等。认证是确保用户身份的关键步骤,Acegi提供了灵活且可扩展的...
5. **最佳实践**:在实际部署中,应确保CAS服务器和应用系统的安全,例如使用SSL/TLS加密通信,定期更新安全策略,以及对用户凭证进行强加密存储。 通过这个示例,开发者可以学习到如何在自己的应用中整合AceGI和...
Acegi的核心功能包括用户身份验证、访问控制、会话管理以及密码加密等,使得开发者能够更方便地实现应用的安全需求。 首先,我们来了解一下Acegi的基本架构。Acegi安全框架主要由以下几个组件构成: 1. **...
此外,Acegi还提供了会话管理、CSRF防护、密码加密等功能,增强了应用的安全性。会话管理可以防止会话劫持和会话固定攻击,而CSRF防护则可以防止跨站请求伪造。 总的来说,这个"最简单acegi权限管理实例"是一个很好...
Acegi框架是Spring框架的一个早期安全模块,它为Java企业级应用提供了强大的安全访问控制功能。在Spring 2.0之后,Acegi被整合并发展成为Spring Security,这是一个更为全面且强大的安全解决方案。本篇文章将深入...
**Acegi**提供了一个简单的解决方案来启用HTTPS,从而加密传输数据。通过在配置文件中指定哪些URL资源需要使用HTTPS,Acegi过滤器会自动处理这些资源的协议转换,简化了HTTPS的集成过程。 #### 五、安全对象访问...
Acegi提供了一套完整的安全解决方案,包括身份验证、授权、会话管理、密码加密等。它的设计基于访问控制表达式(ACE)模型,允许开发者以灵活的方式定义用户访问权限。Acegi与Spring框架紧密集成,使得在Spring应用...
在“数据库版”中,可能包含如何配置和使用数据库存储用户信息、密码哈希和加密的方法,以确保用户凭证的安全存储。 3. **授权(Authorization)**: Acegi Security提供了基于角色的访问控制(RBAC),可以对URL...
Acegi Security(现已被Spring Security替代)是Spring Framework的一个扩展,它提供了一个全面的安全管理框架,包括访问控制、会话管理、密码加密等功能。Acegi Security允许开发者通过XML配置或者编程方式定义安全...