• MD5Util


    package com.cmcc.hybj.payment.framework.crypt;

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;

    import org.apache.shiro.crypto.hash.Md5Hash;

    import com.google.common.base.Joiner;

    /**
     * MD5Util
     *
     * @author gy
     */
    public class MD5Util {

        /**
         * 通过MD5算法加密;
         *
         * @param pwd
         */
        public static String encoder(String pwd) {
            StringBuffer sb = new StringBuffer();
            try {
                //1指定算法类型;
                MessageDigest digest = MessageDigest.getInstance("MD5");
                //2将需要加密的字符串转换成byte数组;
                byte[] bs = digest.digest(pwd.getBytes());
                //3通过遍历bs 生成32位的字符串;
                //最后字符串有个拼接的过程;
                for (byte b : bs) {
                    int i = b & 0xff; //int 类型的i 是4个字节占32位;
                    //int 类型的i转换成16进制字符;
                    String hexString = Integer.toHexString(i);
                    if (hexString.length() < 2) {//补零的过程,因为生成的时候有的是一位有的是两位所以需要有个补零的过程;
                        hexString = "0" + hexString;
                    }
                    sb.append(hexString);
                }
                return sb.toString();
            } catch (NoSuchAlgorithmException e) {//找不到指定算法的错误;
                e.printStackTrace();
            }
            return sb.toString();
        }

        /**
         * 增加的MD5加密 可以用于
         * shiro的md5加密
         *
         * @param str  源字符串
         * @param salt 盐
         * @param num  随机数
         * @return md5Str
         */
        public static String superMd5(String str, String salt, int num) {
            return new Md5Hash(str, salt, num).toString();
        }

        /**
         * 将指定的字符串用MD5算法加密
         *
         * @param inStr 源字符串
         * @return 返回加密后的字符串(默认英文大写)
         */
        public static String string2MD5(String inStr) {
            MessageDigest md5 = null;
            try {
                md5 = MessageDigest.getInstance("MD5");
                byte[] md5Bytes = md5.digest(inStr.getBytes());

                StringBuffer hexValue = new StringBuffer();
                for (int i = 0; i < md5Bytes.length; i++) {
                    int val = ((int) md5Bytes[i]) & 0xff;
                    if (val < 16) {
                        hexValue.append("0");
                    }
                    hexValue.append(Integer.toHexString(val));
                }

                return hexValue.toString().toUpperCase();
            } catch (Exception e) {
                e.printStackTrace();
                return "";
            }
        }

        /**
         * 将字符串数组转换为字符串后进行加密
         *
         * @param strArray
         * @return
         */
        public static String array2MD5(String[] strArray) {
            String linkStr = Joiner.on("").join(strArray);
            return string2MD5(linkStr);
        }

        /**
         * 对给出的String数组进行MD5校验
         *
         * @param strArray
         * @param md5Val
         * @return
         */
        public static Boolean macValidate(String[] strArray, String md5Val) {
            String iVal = array2MD5(strArray);
            if (iVal.equals(md5Val)) {
                return true;
            }
            return false;
        }

        /**
         * 签名
         * @param plainText
         * @param enc
         * @return
         */
        public static String MD5(String plainText, String enc) {
            String md5 = new String();
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                md.update(plainText.getBytes(enc));
                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));
                }
                md5 = buf.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return md5;

        }

    }

  • 相关阅读:
    WCF开发实战系列二:使用IIS发布WCF服务
    电脑远程登录控制Android手机Webkey For Android使用教程
    WCF的https安全(ssl)访问实例
    IIS中“使用 XSL 样式表无法查看 XML 输入”问题的解决
    服务器禁止被ping的设置方法(图文)
    Windows Server 2008 R2 MSDN
    IIS7配置https
    C# 检查网络是否连通 判断远程文件是否存在 C#获取程序路径的方法中需要注意的地方
    c#,winform,treeview,选中节点,选中相应的全部子节点,取消节点,取消父节点,小技巧
    sql大全(一)
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8308451.html
Copyright © 2020-2023  润新知