Java md5签名出现位数错误情况

来源:互联网 发布:什么是实时数据库 编辑:程序博客网 时间:2024/05/17 03:24

问题

在Android 客户端对接口数据签名验证时,遇到了md5签名少0的情况,导致签名也正不通过。

解决

代码如下:

/**     * 对字符串进行32位签名     * @param value     * @return     * @throws NoSuchAlgorithmException     */    public static String md5Encrypt(String value) throws NoSuchAlgorithmException {        MessageDigest digester = MessageDigest.getInstance("MD5");        digester.reset();        return bytes2HexString(digester.digest(value.getBytes()));    }    /**     * 二进制转十六进制String     * @param bytes     * @return     */    private static String bytes2HexString(byte[] bytes) {        StringBuilder sb = new StringBuilder();        for (int i = 0; i < bytes.length; i++) {            //方法一            int val = ((int)bytes[i]) & 0xff;            if(val < 16) {                sb.append("0"); //当转换十进制,会忽略掉前面的"0"            }            sb.append(Integer.toHexString(val));            //方法二            /*String s = Integer.toHexString(b[i] & 0xff);            if (s.length() == 1) {                sb.append("0");            }            sb.append(s);*/        }        return sb.toString();    }
1 0
原创粉丝点击