• springsecurity 权限管理实例菜单管理之自定义加密


    自定义加密是实现PasswordEncoder接口并重写其两个方法

    public interface PasswordEncoder {
        String encode(CharSequence var1); //加密
    
        boolean matches(CharSequence var1, String var2);//比较
    
        //对密码进行再次加密
        default boolean upgradeEncoding(String encodedPassword) {
            return false;
        }
    }

    自定义具体实现

    MD5工具代码实现

    public class MD5Util {
    
        protected MD5Util(){
    
        }
    
        private static final String ALGORITH_NAME = "md5";
    
        private static final int HASH_ITERATIONS = 2;
    
        public static String encrypt_md5(String password) {
            byte[] secretBytes = null;
            try {
                secretBytes = MessageDigest.getInstance("md5").digest(
                        password.getBytes());
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException("找不到md5算法");
            }
            String md5code = new BigInteger(1, secretBytes).toString(16);
            for (int i = 0; i < 32 - md5code.length(); i++) {
                md5code = "0" + md5code;
            }
            return md5code;
        }
    }

    实现自定义MD5加密

    public class MD5PasswordEncoder implements PasswordEncoder {
        /**
         * 加密方法
         * @param charSequence
         * @return
         */
        @Override
        public String encode(CharSequence charSequence) {
            return MD5Util.encrypt_md5(charSequence.toString());
        }
    
        /**
         * 密码比较
         * @param charSequence
         * @param encodedPassword
         * @return
         */
        @Override
        public boolean matches(CharSequence charSequence, String encodedPassword) {
            return encodedPassword.equals(MD5Util.encrypt_md5(charSequence.toString()));
        }
    }
  • 相关阅读:
    hdu6162 Ch’s gift
    hdu 6166 Senior Pan
    bzoj2818 Gcd
    hdu6127 Hard challenge
    splay伸展树模板
    2016-2017 National Taiwan University World Final Team Selection Contest J
    2016-2017 National Taiwan University World Final Team Selection Contest C
    使用powershell管理域用户
    EGL Driver message (Critical) eglInitialize: No available renderers.
    Python实现telnet命令测试防火墙
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15162763.html
Copyright © 2020-2023  润新知