您的位置:首页 > 编程语言 > Java开发

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

2017-03-02 10:34 337 查看

问题

在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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java android md5