zoukankan      html  css  js  c++  java
  • 消息摘要工具类。集成了16位MD5、32位MD5、SHA1、SHA224、SHA256、SHA384、SHA512

    /**
     * 消息摘要工具类。集成了16位MD5、32位MD5、SHA1、SHA224、SHA256、SHA384、SHA512;
     * @author 大别山人*/
    public final class HashUtils {
        /**
         * 根据指定的字符串,返回SHA1的摘要结果
         * @param data    要生成摘要信息的字符串
         * @return
         */
        public static final String toSHA1(String data) {
            return compute(data, "SHA-1");
        }
        /**
         * 根据指定的字符串,返回SHA224的摘要结果
         * @param data    要生成摘要信息的字符串
         * @return
         */
        public static final String toSHA224(String data) {
            return compute(data, "SHA-224");
        }
        /**
         * 根据指定的字符串,返回SHA256的摘要结果
         * @param data    要生成摘要信息的字符串
         * @return
         */
        public static final String toSHA256(String data) {
            return compute(data, "SHA-256");
        }
        /**
         * 根据指定的字符串,返回SHA384的摘要结果
         * @param data    要生成摘要信息的字符串
         * @return
         */
        public static final String toSHA384(String data) {
            return compute(data, "SHA-384");
        }
        /**
         * 根据指定的字符串,返回SHA512的摘要结果
         * @param data    要生成摘要信息的字符串
         * @return
         */
        public static final String toSHA512(String data) {
            return compute(data, "SHA-512");
        }
        /**
         * 根据指定的字符串,返回32为MD5的摘要结果
         * @param data    要生成摘要信息的字符串
         * @return
         */
        public static final String toMD5_32(String data) {
            return compute(data, "md5");
        }
        /**
         * 根据指定的字符串,返回16位MD5的摘要结果
         * @param data    要生成摘要信息的字符串
         * @return
         */
        public static final String toMD5_16(String data) {
            return compute(data, "md5").substring(8, 24);
        }
        /**
         * 根据指定的字符串和指定的摘要算法,返回对应的摘要结果
         * @param data    要生成摘要信息的字符串
         * @param strType    指定的摘要算法
         * @return
         */
        private static final String compute(String data,String strType ) {
            try {
                MessageDigest digest = MessageDigest.getInstance(strType);
                digest.update(data.getBytes("utf-8"));
                byte[] bs = digest.digest();
                StringBuilder sb = new StringBuilder();
                for (byte b : bs) {
                    int temp = b & 0xFF;
                    if (temp < 16) {
                        sb.append("0");
                    }
                    sb.append(Integer.toHexString(temp));
                }
                return sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
                return "";
            }
        }
    }
  • 相关阅读:
    Win10下 Docker Flask实例
    4.1 线性映射的概念
    桥梁的基本组成和分类
    Qt5字符串编码转换学习
    在右键菜单中添加用Jupyter Notebook打开
    左右手(直角)坐标系叉乘计算公式
    __new__方法与单键实例
    向量组的秩
    从线性组合的角度理解三维运算
    Hexo使用小结
  • 原文地址:https://www.cnblogs.com/pf1988/p/8672267.html
Copyright © 2011-2022 走看看