`
kobe学java
  • 浏览: 258453 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

spring security 密码编码器

 
阅读更多

 

spring security 密码编码器

 (2011-07-19 10:28:34)
标签: 

spring

 

security

 

密码编码器

 

it

分类: 架构与开发
我们还进行了md5密码扩展,这也要在Security框架进行配置,在表中插入一些信息,就可以进行数据库验证了,此时Security框架的配置如下,修改认证管理器:
Xml代码
  1. <security:authentication-manager>  
  2.     <security:authentication-provider>  
  3.         <security:password-encoder ref="md5Encoder" />  
  4.         <security:jdbc-user-service data-source-ref="dataSource" />  
  5.     </security:authentication-provider>  
  6. </security:authentication-manager>  


    这里我们配置了jdbc数据源和密码编码器,因为连MD5加密方式也是我们自定义的,这样安全系数更高。要使用自定义的加密器,别忘了编写加密器的bean。

Xml代码
  1. <bean id="md5Encoder" class="org.ourpioneer.board.util.MD5Encoder" />  


    加密器类需要实现PasswordEncoder接口,然后编写我们自己的加密方案,加密器很简单,如下设计:

Java代码
  1. package org.ourpioneer.board.util;   
  2. import org.springframework.dao.DataAccessException;   
  3. import org.springframework.security.authentication.encoding.PasswordEncoder;   
  4. public class MD5Encoder implements PasswordEncoder {   
  5.     public String encodePassword(String origPwd, Object salt)   
  6.             throws DataAccessException {   
  7.         return MD5.getMD5ofStr(origPwd);   
  8.     }   
  9.     public boolean isPasswordValid(String encPwd, String origPwd, Object salt)   
  10.             throws DataAccessException {   
  11.         return encPwd.equals(encodePassword(origPwd, salt));   
  12.     }   
  13. }  


    其中使用到的MD5加密类为:

Java代码
  1. package org.ourpioneer.board.util;   
  2. import java.security.MessageDigest;   
  3.   
  4. public class MD5 {   
  5.       
  6.     public static String getMD5ofStr(String origString) {   
  7.         String origMD5 = null;   
  8.         try {   
  9.             MessageDigest md5 = MessageDigest.getInstance("MD5");   
  10.             byte[] result = md5.digest(origString.getBytes());   
  11.             origMD5 = byteArray2HexStr(result);   
  12.         } catch (Exception e) {   
  13.             e.printStackTrace();   
  14.         }   
  15.         return origMD5;   
  16.     }   
  17.       
  18.     private static String byteArray2HexStr(byte[] bs) {   
  19.         StringBuffer sb = new StringBuffer();   
  20.         for (byte b : bs) {   
  21.             sb.append(byte2HexStr(b));   
  22.         }   
  23.         return sb.toString();   
  24.     }   
  25.       
  26.     private static String byte2HexStr(byte b) {   
  27.         String hexStr = null;   
  28.         int n = b;   
  29.         if (n < 0) {   
  30.             // 若需要自定义加密,请修改这个移位算法即可   
  31.             n = b & 0x7F + 128;   
  32.         }   
  33.         hexStr = Integer.toHexString(n / 16) + Integer.toHexString(n % 16);   
  34.         return hexStr.toUpperCase();   
  35.     }   
  36.       
  37.     public static String getMD5ofStr(String origString, int times) {   
  38.         String md5 = getMD5ofStr(origString);   
  39.         for (int i = 0; i < times - 1; i++) {   
  40.             md5 = getMD5ofStr(md5);   
  41.         }   
  42.         return getMD5ofStr(md5);   
  43.     }   
  44.       
  45.     public static boolean verifyPassword(String inputStr, String MD5Code) {   
  46.         return getMD5ofStr(inputStr).equals(MD5Code);   
  47.     }   
  48.       
  49.     public static boolean verifyPassword(String inputStr, String MD5Code,   
  50.             int times) {   
  51.         return getMD5ofStr(inputStr, times).equals(MD5Code);   
  52.     }   
  53.       
  54.     public static void main(String[] args) {   
  55.         System.out.println("123:" + getMD5ofStr("123"));   
  56.         System.out.println("123456789:" + getMD5ofStr("123456789"));   
  57.         System.out.println("pioneer:" + getMD5ofStr("pioneer"));   
  58.         System.out.println("123:" + getMD5ofStr("123"4));   
  59.     }   
  60. }  

 

分享到:
评论

相关推荐

    Spring security 自定义密码加密方式的使用范例。

    2. **配置Spring Security**:在Spring Security的配置类中,使用自定义的密码编码器替换默认的。 ```java @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter ...

    深入浅析Spring Security5中默认密码编码器

    深入浅析Spring Security 5中默认密码编码器 Spring Security 5中默认密码编码器是密码管理过程中的一项重要改进,引入了更安全的默认机制。对于Spring应用程序来说,升级到Spring Security 5可能会导致问题,因为...

    springSecurity 实现传参

    6. **密码编码器**:Spring Security推荐使用`PasswordEncoder`接口,如`BCryptPasswordEncoder`,来确保密码的安全性。在配置中指定这个密码编码器,Spring Security会在用户注册或修改密码时自动进行哈希处理。 7...

    spring-security 官方文档 中文版

    - **添加一个密码编码器**:通过配置密码编码器来提高系统的安全性。 - **高级 web 特性**: - **Remember-Me 认证**:允许用户在关闭浏览器后仍然保持登录状态。 - **添加 HTTP/HTTPS 信道安全**:通过配置 ...

    spring spring security2.5 jar

    Spring Security通过访问决策管理器(AccessDecisionManager)和访问决策投票器(AccessDecisionVoter)实现这一过程。开发者可以自定义权限表达式(例如,`hasRole('ROLE_ADMIN')`)并结合方法或URL安全配置进行...

    springboot springsecurity动态权限控制

    在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...

    Spring Security 完整实例

    Spring Security 提供了多种内置的密码编码器,如BCrypt、PBKDF2和SHA-256。然而,根据项目需求,可能需要自定义密码编码策略。可以创建一个实现了`PasswordEncoder`接口的类,实现自己的编码和校验逻辑。 **自定义...

    springsecurity使用配置详解

    在提供的压缩包`springsecurity配置demo`中,你将找到示例代码和详细说明,这将帮助你更好地理解和实践上述概念。通过学习和实践这些示例,你将能够为自己的Spring应用程序构建强大的安全防护。

    SpringSecurity素材.rar

    1. **SpringSecurity简介**:首先会介绍SpringSecurity的基本概念和架构,包括它如何通过层层过滤器保护Web应用,以及它提供的主要组件如Authentication(认证)和Authorization(授权)。 2. **配置SpringSecurity...

    基本的spring mvc + spring security实现的登录(无数据库)

    - **配置**:可以使用Java配置类或XML配置文件来定制Spring Security的行为,例如定义访问规则、配置安全过滤器链等。 - **无数据库登录**:在没有数据库的情况下,用户信息可能存储在内存中或者通过硬编码实现,...

    Spring Security.pdf

    在pom文件中配置Spring Security依赖后,可以创建Spring Security工程的结构,包括编写配置类来配置安全性细节,如用户详情服务、密码编码器、安全拦截器等。接着,实现用户登录、登出等页面和功能。在配置过程中,...

    springsecurity官方文档3.2

    - **添加密码编码器**: 指导如何添加密码编码器来增强安全性。 - **高级 Web 功能**: - **记住我认证**: 说明了如何实现“记住我”功能,使得用户在关闭浏览器后仍能保持登录状态。 - **HTTP/HTTPS 通道安全性**:...

    springsecurity3.1.pdf

    此外,还可以通过添加自定义的认证提供者和密码编码器,来增强系统的安全性。 3.3. 高级Web功能 除了基础的认证和授权,Spring Security 3.1还支持一系列高级Web安全特性: - **记住我认证(Remember-Me ...

    SpringMVC集成SpringSecurity

    1. **SpringSecurity架构**:SpringSecurity的核心架构由多个组件构成,包括过滤器链、认证管理、权限控制等。其中,过滤器链是SpringSecurity处理请求的第一道防线,它会拦截所有HTTP请求并进行安全检查。 2. **...

    Spring Security 中文教程.pdf

    - **使用其他认证提供器**:扩展默认的认证机制,例如添加密码编码器等。 - **高级web特性**: - **Remember-Me认证**:提供自动登录功能,使用户无需每次登录。 - **添加HTTP/HTTPS信道安全**:增强网络通信的...

    spring security 入门demo

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它为Web应用程序提供了全面的身份验证、授权和服务保护。在这个"Spring Security 入门demo"中,我们将会探讨一系列关键概念和功能,通过提供的...

    Spring Security 文档

    在第一种方法中,Spring Security的示例项目`spring-security-samples-tutorial-3.0.2.RELEASE`提供了硬编码配置的参考,它演示了如何在XML配置文件中定义用户、密码和权限。这种方法适合初学者快速了解Spring ...

    spring Security整合SSH

    这包括定义访问控制规则、配置用户DetailsService以从数据库加载用户信息,以及配置密码编码器以正确验证用户密码。 1. **配置Spring Security**:在Spring的配置文件中添加`&lt;http&gt;`和`&lt;authentication-manager&gt;`...

    springsecurity电子书

    6. 密码编码器:添加密码编码器来增强安全强度。 知识点四:Spring Security高级Web特性 1. 记住我认证:提供了“记住我”功能的认证方式,方便用户回访。 2. HTTP/HTTPS通道安全:添加HTTP和HTTPS的安全通道。 3. ...

    Spring Security模块

    5. **PasswordEncoder**:Spring Security 提供了多种密码编码器,用于确保存储在数据库中的密码是加密的,提高安全性。 **二、Spring Security 的工作流程** 1. **请求到达**:用户发送 HTTP 请求到服务器。 2. ...

Global site tag (gtag.js) - Google Analytics