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、 测试即可

    测试是成功的~

  • 相关阅读:
    POJ 2112 二分+最大流
    POJ 3281 最大流
    枚举------暴力与优化
    动态规划入门
    简单二叉树
    花式WA
    18年第十二届东北四省赛
    18年第十三届黑龙江省赛
    ACM中的java的使用;
    CF#483(div2 C)
  • 原文地址:https://www.cnblogs.com/jinyuanya/p/13950628.html
Copyright © 2011-2022 走看看