今天做项目的时候发现java里md5算法返回的是16个字节长的byte,但是rails加密后是32位长的字符串,于是需要在客户端将这16字节的byte转换为32个字符的字符串,找到了一个算法如下:
以下是算法:
//测试
MessageDigest md = MessageDigest.getInstance("MD5");
md.update("samyou".getBytes());
byte b[] = md.digest();
System.out.println(bytesToHexString(b));
以下是算法:
public static final String bytesToHexString(byte[] bArray)
{
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toLowerCase());
}
return sb.toString();
}