Java MD5加密

md5加密简要算法

生成 16 位加密串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * 利用MD5进行加密
 *
 * @param str 待加密的字符串
 * @return 加密后的字符串
 */
private String EncoderByMd5(String str) throws Exception {
	// 生成一个MD5加密计算摘要
	MessageDigest md = MessageDigest.getInstance("MD5");
	// 计算md5函数
	md.update(str.getBytes());
	// digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
	// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
	return new BigInteger(1, md.digest()).toString(16);
}

生成 32 位加密串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private String md5(String input) {
    MessageDigest md = null;

    try {
        md = MessageDigest.getInstance("MD5");

        md.update(input.getBytes());

        String md5 = new BigInteger(1, md.digest()).toString(16);

        return fillMD5(md5);
    } catch (NoSuchAlgorithmException e) {
        logger.error("字串加密失败!", e);
    }

    return null;
}

/**
 * 加密串补齐32位
 */
private String fillMD5(String md5) {
    return md5.length() == 32 ? md5 : fillMD5("0" + md5);
}