Java MD5功能:有人可以解释一下这段代码吗?

时间:2015-11-17 21:31:47

标签: java md5

我发现这个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循环之后的那条线。

非常感谢!

1 个答案:

答案 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()中执行此整个方法。)