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 "";
            }
        }
    }
  • 相关阅读:
    java 技术社区!!
    有关 gridview的 (做东西 容易忘记 记下!)
    【C#复习之虚方法vs抽象类】08.4.3 上午
    高分求解答!!!
    【学习笔记】asp.net MVC!
    asp.net ajax 尝试 之很好很强大!08.4.4
    Linux流量监控工具 – iftop (最全面的iftop教程)
    linux下查看某目录占用的空间大小
    基于CentOS的Linux基本网络配置,包括网卡eth0、DNS、Host等
    ubuntu安装ssh服务
  • 原文地址:https://www.cnblogs.com/pf1988/p/8672267.html
Copyright © 2011-2022 走看看