我发现这个java函数加密了MD5中的字符串,但是我不明白它是如何工作的:
public static String makeMD5(String text){
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
md.update(text.getBytes());
byte byteData[] = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++)
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
text = sb.toString();
return text;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
我不理解for循环之后的那条线。
非常感谢!
答案 0 :(得分:0)
for循环之后的行是将字节数组转换为十六进制的坦率过于复杂的方式。等效的,更简单的方法可能是
sb.append(String.format("%02x", b & 0xff));
虽然如果你可以使用第三方库,甚至还有更简单的解决方案。 How to convert a byte array to a hex string in Java?有很多建议。
(如果第三方库 可用,Guava将允许您在一行Hashing.md5().hashString(text, Charset.defaultCharset()).toString()
中执行此整个方法。)