之前找过一些版本,发现有一些使用场景下,md5sum会少一个字符,这对于一个已发布出去的版本是有一定的硬伤的。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public static String md5sum(String str) {
        MessageDigest mdEncoder;
        try {
            mdEncoder = MessageDigest.getInstance("MD5");
            mdEncoder.update(str.getBytes(Charset.forName("US-ASCII")), 0, str.length());
            StringBuilder hexString = new StringBuilder();
            for (byte b : mdEncoder.digest()) {
                hexString.append(String.format("%02x", b&0xff));
            }
            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }