spring security 5.x兼容多种密码加密方式 -欧洲杯足彩官网

`
wiselyman
  • 浏览: 2077003 次
  • 性别:
  • 来自: 合肥
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 博客专栏
    点睛spring4.1
    浏览量:80745
    点睛spring mvc4...
    浏览量:129940
    社区版块
    • ( 11)
    • ( 19)
    • ( 0)
    存档分类
    最新评论

    spring security 5.x兼容多种密码加密方式

    1 spring security passwordencoder

    spring security 5不需要配置密码的加密方式,而是用户密码加前缀的方式表明加密方式,如:

    • {md5}88e2d8cd1e92fd5544c8621508cd706b代表使用的是md5加密方式;
    • {bcrypt}$2a$10$ezegvvv2zxr/vgivfzqzs.jlv878apbgrt9mapk1wrg0ovsf4yui6代表使用的是bcrypt加密方式。

    spring security官方推荐使用更加安全的bcrypt加密方式。

    这样可以在同一系统中支持多种加密方式,迁移用户比较省事。spring security 5支持的加密方式在passwordencoderfactories中定义:

    public class passwordencoderfactories {
        public static passwordencoder createdelegatingpasswordencoder() {
            string encodingid = "bcrypt";
            map encoders = new hashmap();
            encoders.put(encodingid, new bcryptpasswordencoder());
            encoders.put("ldap", new ldapshapasswordencoder());
            encoders.put("md4", new md4passwordencoder());
            encoders.put("md5", new messagedigestpasswordencoder("md5"));
            encoders.put("noop", nooppasswordencoder.getinstance());
            encoders.put("pbkdf2", new pbkdf2passwordencoder());
            encoders.put("scrypt", new scryptpasswordencoder());
            encoders.put("sha-1", new messagedigestpasswordencoder("sha-1"));
            encoders.put("sha-256", new messagedigestpasswordencoder("sha-256"));
            encoders.put("sha256", new standardpasswordencoder());
            return new delegatingpasswordencoder(encodingid, encoders);
        }
        private passwordencoderfactories() {
        }
    }
    

    2 测试

    2.1 pom.xml
    
    
        4.0.0
        com.hfcsbc
        security
        0.0.1-snapshot
        jar
        security
        demo project for spring boot
        
            org.springframework.boot
            spring-boot-starter-parent
            2.0.0.m7
             
        
        
            utf-8
            utf-8
            1.8
        
        
            
                org.springframework.boot
                spring-boot-starter-security
            
            
                org.springframework.boot
                spring-boot-starter-test
                test
            
            
                org.springframework.security
                spring-security-test
                test
            
            
                org.projectlombok
                lombok
            
        
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                
            
        
        
            
                spring-snapshots
                spring snapshots
                https://repo.spring.io/snapshot
                
                    true
                
            
            
                spring-milestones
                spring milestones
                https://repo.spring.io/milestone
                
                    false
                
            
        
        
            
                spring-snapshots
                spring snapshots
                https://repo.spring.io/snapshot
                
                    true
                
            
            
                spring-milestones
                spring milestones
                https://repo.spring.io/milestone
                
                    false
                
            
        
    
    
    2.2 测试

    spring security 5.x默认使用bcrypt加密

    @slf4j
    public class domainuserdetailsservice {
        public static void main(string[] args){
            passwordencoder passwordencoder = passwordencoderfactories.createdelegatingpasswordencoder();
            string encode = passwordencoder.encode("password");
            log.info("加密后的密码:"   encode);
            log.info("bcrypt密码对比:"   passwordencoder.matches("password", encode));
            string md5password = "{md5}88e2d8cd1e92fd5544c8621508cd706b";//md5加密前的密码为:password
            log.info("md5密码对比:"   passwordencoder.matches("password", encode));
        }
    }
    

     



     

    源码地址:http://www.wisely.top/2018/01/27/spring-security-5x-jian-rong-duo-zhong-mi-ma-jia-m/

     
    • 大小: 102.4 kb
    0
    1
    分享到:
    评论

    相关推荐

      spring security针对该功能有两种实现方式,一种是简单的使用加密来保证基于 cookie 的 token 的安全,另一种...这篇文章主要给大家介绍了关于spring security 5.x实现兼容多种密码的加密方式,需要的朋友可以参考下。

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

      spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...

       通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… java利用des私钥对称加密代码实例 ...

       通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… java利用des私钥对称加密代码实例 ...

      采用分层设计、双重验证、提交数据安全编码、密码加密、访问验证、数据权限验证。 使用maven做项目管理,提高项目的易开发性、扩展性。 --- ###更新日期2019-01-16 * 升级springboot版本为2.1.2.release ...

      常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在c#里把arraylist转换为array 或 把array转换为arraylist c# 2.0 在.net 2.0中,让你的组件也可以绑定 .net20 一种简单的窗口控件ui状态控制方法 翻译msdn...

    global site tag (gtag.js) - google analytics
    网站地图