zoukankan      html  css  js  c++  java
  • 应用自定义密码加密规则

    开始吧

    1、 认识MD5

    简单理解:是一个算法(消息摘要算法)。实现原理

    2、 自定义类MyPasswordEncoderService实现PasswordEncoder接口

    package com.zhoujinyuan.springsecurity.service;
    
    import org.springframework.security.crypto.password.PasswordEncoder;
    import org.springframework.stereotype.Component;
    
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Objects;
    
    @Component
    public class MyPasswordEncoderService implements PasswordEncoder {
    
        /**
         * 进行加密的方法
         *
         * @param rawPassword   未加密的密码
         * @return
         */
        @Override
        public String encode(CharSequence rawPassword) {
            return privateEncode(rawPassword);
        }
    
        /**
         * 进行密码比对的方法
         *
         * @param rawPassword       未加密的密码
         * @param encodedPassword   加密的密码
         * @return
         */
        @Override
        public boolean matches(CharSequence rawPassword, String encodedPassword) {
            return Objects.equals(privateEncode(rawPassword),encodedPassword);
    
        }
    
        /**
         * 加密方法
         */
        private String privateEncode(CharSequence rawPassword){
            String algorithm = "MD5";
            String encoded = null;
            try {
                MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
                // 获取输入的字节数组
                byte[] input = ((String) rawPassword).getBytes();
                // 加密
                byte[] output = messageDigest.digest(input);
                // 将加密后的字节数组转成 16 进制
                encoded = new BigInteger(1, output).toString(16).toUpperCase();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return encoded;
        }
    }
    

    3、 去配置类配置

        //重写另外一个父类的方法,来设置登录系统的账号密码(走数据库)
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            //使用自定义 MyUserDetailsService 完成登录
            auth
                    //走账号密码验证的方法
                    .userDetailsService(myUserDetailsService)
                    //走给输入的密码加密和比对两个方法
                    .passwordEncoder(myPasswordEncoderService);
        }
    

    4、 测试即可

    测试是成功的~

  • 相关阅读:
    关于Slowloris HTTP DoS
    [转]更新SDK失败后,出现无法找到SDK location的解决方法
    [吐槽文]一篇课设小结
    无聊时候打打字之百度地图 【更新中】
    git初学 多多指教
    无聊的时候打打字之寒假项目小记录
    机会来了,创业你准备好了吗?
    技术高速发展,IT人员路在何方?
    开发Web应用程序常用优化性能的技巧
    DataTable中存在空值 输出到EXCEL时格式变乱的解决方法【附代码】
  • 原文地址:https://www.cnblogs.com/jinyuanya/p/13950628.html
Copyright © 2011-2022 走看看