您的位置:首页 > 移动开发 > 微信开发

微信支付--工具类--MD5

2015-11-24 10:14 363 查看
import java.security.MessageDigest;  

import java.util.Iterator;  

import java.util.Map;  

import java.util.Set;  

import java.util.SortedMap;  

  

public class MD5Util {  

      

    private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",  

        "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };  

  

    private static String byteArrayToHexString(byte b[]) {  

        StringBuffer resultSb = new StringBuffer();  

        for (int i = 0; i < b.length; i++)  

            resultSb.append(byteToHexString(b[i]));  

  

        return resultSb.toString();  

    }  

  

    private static String byteToHexString(byte b) {  

        int n = b;  

        if (n < 0)  

            n += 256;  

        int d1 = n / 16;  

        int d2 = n % 16;  

        return hexDigits[d1] + hexDigits[d2];  

    }  

  

    public static String MD5Encode(String origin, String charsetname) {  

        String resultString = null;  

        try {  

            resultString = new String(origin);  

            MessageDigest md = MessageDigest.getInstance("MD5");  

            if (charsetname == null || "".equals(charsetname))  

                resultString = byteArrayToHexString(md.digest(resultString  

                        .getBytes()));  

            else  

                resultString = byteArrayToHexString(md.digest(resultString  

                        .getBytes(charsetname)));  

        } catch (Exception exception) {  

        }  

        return resultString;  

    }  

  

      

      

    /** 

     * 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。 

     */  

    public static String createMD5Sign(SortedMap<String, String> signParams,  

            String paykey) {  

        StringBuffer sb = new StringBuffer();  

        Set es = signParams.entrySet();  

        Iterator it = es.iterator();  

        while (it.hasNext()) {  

            Map.Entry entry = (Map.Entry) it.next();  

            String k = (String) entry.getKey();  

            String v = (String) entry.getValue();  

            if (null != v && !"".equals(v) && !"sign".equals(k)  

                    && !"key".equals(k)) {  

                sb.append(k + "=" + v + "&");  

            }  

        }  

        sb.append("key=" + paykey);  

        String sign = MD5Encode(sb.toString(), "UTF-8").toUpperCase();  

        return sign;  

    }  

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: