`
jsczxy2
  • 浏览: 1273736 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

Spring Security 3.1 中功能强大的加密工具 PasswordEncoder

阅读更多

好吧,这种加密机制很复杂,还是看下图比较好了解:

 

 3.1.0版本中新的PasswordEncoder继承关系 

    

 

 

而在Spring-Security 3.1.0 版本之后,Spring-security-crypto模块中的password包提供了更给力的加密密码的支持,这个包中也有PasswordEncoder接口,接口定义如下。 

 

 

    Public interface PasswordEncoder{
      String encode(String rawPassword);
      Boolean matches(String rawPassword,String encodedPassword);
    }
   
 

 

 

 定义了两个方法,encode方法是对方法加密,而match方法是用来验证密码和加密后密码是否一致的,如果一致则返回true。和authentication.encoding包中的PasswordEncoder接口相比,简化了许多。 

 

   位于org.springframeword.security.crypto.password包中的 

StandardPasswordEncoder类,是PasswordEncoder接口的(唯一)一个实现类,是本文所述加密方法的核心。它采用SHA-256算法,迭代1024次,使用一个密钥(site-wide secret)以及8位随机盐对原密码进行加密。 

   随机盐确保相同的密码使用多次时,产生的哈希都不同; 密钥应该与密码区别开来存放,加密时使用一个密钥即可;对hash算法迭代执行1024次增强了安全性,使暴力破解变得更困难些。 

 

   和上一个版本的PasswordEncoder比较,好处显而易见:盐值不用用户提供,每次随机生成;多重加密————迭代SHA算法+密钥+随机盐来对密码加密,大大增加密码破解难度。 

 

 

OK,了解了原理我们可以来测试一下:

import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.crypto.password.StandardPasswordEncoder;

/**
 * @author XUYI
 * Spring Security 3.1 PasswordEncoder
 */
public class EncryptUtil {
    //从配置文件中获得
    private static final String SITE_WIDE_SECRET = "my-secret-key";
    private static final PasswordEncoder encoder = new StandardPasswordEncoder(
       SITE_WIDE_SECRET);
 
    public static String encrypt(String rawPassword) {
         return encoder.encode(rawPassword);
    }
 
    public static boolean match(String rawPassword, String password) {
         return encoder.matches(rawPassword, password);
    }
    
    public static void main(String[] args) {
		System.out.println(EncryptUtil.encrypt("每次结果都不一样伐?"));
		System.out.println(EncryptUtil.encrypt("每次结果都不一样伐?"));
        System.out.println(EncryptUtil.encrypt("每次结果都不一样伐?"));
		System.out.println(EncryptUtil.encrypt("每次结果都不一样伐?"));
        System.out.println(EncryptUtil.encrypt("每次结果都不一样伐?"));  
        //但是把每次结果拿出来进行match,你会发现可以得到true。
	}
 }
 
分享到:
评论
1 楼 zhl549342097 2016-08-30  
match  == false

相关推荐

    spring_security_3.1

    在本文中,我们将深入探讨Spring Security 3.1的主要特性和用法。 1. **身份验证**:Spring Security 提供了多种身份验证机制,包括基于内存的、JDBC的、LDAP的和自定义的。在3.1版本中,你可以配置`...

    springsecurity3.1.pdf

    总之,Spring Security 3.1是一个全面而强大的安全框架,它不仅提供了丰富的安全功能,还致力于通过社区的力量,不断优化和扩展其功能,以满足日益复杂的安全需求。无论是初学者还是有经验的开发者,都能从中找到...

    spring security3.1高级详细开发指南

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。在Spring Security 3.1版本中,它提供了多种方式来管理用户认证和授权。本指南将深入讲解如何利用这个框架进行高级开发,通过一个简单的示例和...

    spring security 3.1学习资料 及 附件下载

    本篇文章将围绕"Spring Security 3.1"这一主题,深入探讨其核心概念、功能特性以及实际应用。 一、Spring Security简介 Spring Security是Spring生态系统的组成部分,它为Java应用程序提供了全面的安全管理解决...

    Spring Security 3.1 配置实例,有URL 方法拦截,都存数据库 maven

    在Spring Security中,用户信息通常存储在数据库中,而不是硬编码在配置文件里。这可以通过自定义`UserDetailsService`实现。例如: ```java @Service("userDetailsService") public class ...

    spring security3.1的demo

    在这个基于Spring Security 3.1的示例项目中,我们将深入探讨这个版本的核心概念和功能,以及如何在一个简单的应用程序中实现它们。 1. **核心组件与架构** Spring Security 3.1 的核心组件包括:过滤器链、访问...

    Spring Security 3.1.pdf

    ### Spring Security 3.1: Secure Your Web Applications from Hackers with This Step-by-Step Guide ...对于任何希望提高应用程序安全性的开发者来说,Spring Security 3.1 都是一个值得深入研究的强大工具。

    springsecurity3.1官方手册(含中文版-英文版)

    Spring Security是Java平台上的一个安全框架,它提供了强大的访问控制和身份验证功能,广泛应用于企业级应用的安全防护。本手册分为中文版和英文版,方便不同语言背景的开发者学习和查阅。 在3.1版本中,Spring ...

    Spring Security3.1实践

    Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架,广泛应用于Java企业级应用中。在Spring Security 3.1版本中,它提供了一套全面的安全解决方案,涵盖了从用户认证到权限控制等多个层面。本文将...

    Spring Security 3.1 +Spring +Servlet+JdbcTemplate

    Spring Security 3.1 是一个强大的安全框架,用于保护基于Java的Web应用程序。它与Spring框架紧密结合,提供了全面的身份验证、授权和访问控制功能。在本项目中,开发者结合了Spring Security 3.1,Spring,Servlet...

    Spring Security3.1实例

    Spring Security 是一个强大的安全框架,用于Java应用的安全管理。它提供了认证、授权和访问控制功能,使得开发者可以轻松地在应用程序中实现复杂的安全需求。在3.1版本中,Spring Security 进一步优化了其核心架构...

    spring security3.1 实现验证码自定义登录

    在现代Web应用程序的安全管理中,Spring Security是一个不可或缺的框架,它提供了强大的访问控制和身份验证功能。在本文中,我们将深入探讨如何在Spring Security 3.1版本中实现验证码的自定义登录,以增强系统安全...

    spring security 3.1

    Spring Security 3.1 版本是该系列中的一个重要版本,它引入了许多新功能和改进,旨在帮助开发者更加灵活高效地保护基于 Spring 的应用。 #### 二、Spring Security 3.1 主要特性 ##### 1. 认证机制增强 - **...

    spring security 3.1 PDF 英文版,源代码.7z

    在3.1版本中,Spring Security进一步增强了其功能和灵活性,使得开发者能够更方便地集成到自己的应用中。 标题中的“spring security 3.1 PDF 英文版,源代码.7z”指的是一个关于Spring Security 3.1的PDF文档,...

    Spring Security 3.1 随书源代码

    在"Spring Security 3.1 随书源代码"中,我们可以看到多个章节示例,涵盖了Spring Security的关键功能和应用场景。 1. **身份验证**:Spring Security 提供了多种身份验证机制,如基于表单的身份验证、HTTP基本认证...

    SpringSecurity3.1实际摸索总结

    SpringSecurity 是一个强大的安全框架,主要用于Java应用的安全管理,包括认证和授权。SpringSecurity 3.1 版本在此前的基础上进行了改进和调整,本文将深入探讨其关键知识点。 首先,SpringSecurity 的核心架构...

    Spring Security3.1高级详细开发指南

    ### Spring Security 3.1 高级开发指南详解 #### 一、Spring Security 3.1 使用方法概述 Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。Spring Security 3.1 版本提供了多种不同的配置方式...

    Spring Security3.1最新配置实例

    在Spring Security 3.1版本中,该框架提供了一套完善的解决方案来管理认证、授权以及访问控制。这个实例主要展示了如何将Spring Security 3.1与Struts2和Hibernate集成,以实现一个完整的Web应用安全架构。 首先,...

    spring3及springsecurity3.1源码及jar包

    非常完整的spring3及springsecurity3.1源码及jar包 spring3及springsecurity3.1源码及jar包,导入eclipse将各个工程下的jar包分别加入buildpath就可以用了

Global site tag (gtag.js) - Google Analytics