zoukankan      html  css  js  c++  java
  • MD5 加密工具类MD5Util

    我们在使用MD5 在线加密的时候,会发现下面情况,大小写的区别就不说啦,那么16位和32位有啥区别呢,其实16 位实际上是从 32 位字符串中,取中间的第 9 位到第 24 位的部分,就是str.substring(8, 24);

    我们看看在java中是怎么实现的

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5Util {
    
        /**
         * MD5加密字符串
         *
         * @param str
         * @return
         */
        public static String getMD5(String str) {
            if (EmptyUtil.isNotEmpty(str)) {
                try {
                    MessageDigest md = MessageDigest.getInstance("MD5");
                    md.update(str.getBytes());
                    byte b[] = md.digest();
                    int i;
                    StringBuffer buf = new StringBuffer("");
                    for (int offset = 0; offset < b.length; offset++) {
                        i = b[offset];
                        if (i < 0)
                            i += 256;
                        if (i < 16)
                            buf.append("0");
                        buf.append(Integer.toHexString(i));
                    }
                    return buf.toString();
                } catch (NoSuchAlgorithmException e) {
                    e.printStackTrace();
                }
            }
            return "";
        }
    
    
        /**
         * 获取32位大写
         *
         * @param str
         * @return
         */
        public static String getMD5_32_upper(String str) {
            if (EmptyUtil.isNotEmpty(str))
                return getMD5(str).toUpperCase();
            return "";
        }
    
    
        /**
         * 获取32位小写
         *
         * @param str
         * @return
         */
        public static String getMD5_32_lower(String str) {
            if (EmptyUtil.isNotEmpty(str))
                return getMD5(str).toLowerCase();
            return "";
        }
    
    
        /**
         * 获取16位大写
         *
         * @param str
         * @return
         */
        public static String getMD5_16_upper(String str) {
            if (EmptyUtil.isNotEmpty(str))
                return getMD5(str).substring(8, 24).toUpperCase();
            return "";
        }
    
    
        /**
         * 获取16位小写
         *
         * @param str
         * @return
         */
        public static String getMD5_16_lower(String str) {
            if (EmptyUtil.isNotEmpty(str))
                return getMD5(str).substring(8, 24).toLowerCase();
            return "";
        }
    
    
    }
  • 相关阅读:
    [转]被玩坏的innerHTML、innerText、textContent和value属性
    在github上优雅的搭建个人博客
    使用jmeter进行压力测试入门讲解
    一、docker 入坑(win10和Ubuntu 安装)
    使用C#开发Android应用之WebApp
    Win10上的Docker应用:Kubernetes(容器集群)
    Win10上的Docker应用:Docker-compose(容器编排)
    Win10上的Docker应用:Hello World
    在web端使用html5访问远程桌面
    HtmlAgilityPack
  • 原文地址:https://www.cnblogs.com/bdsdkrb/p/9303739.html
Copyright © 2011-2022 走看看