介绍

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
注意,无论数据数据多少,MD5总是产生128 bit的二进制数据。

32位版本

MD5有32个字符和16个字符两个版本,32个字符版本的原理:每4 bit转为一个16(2的4次方)进制的字符,所以md5运算后产生32(128/4)个字符,常见的MD5都是32位字符的。

16位版本

在32个字符版本上,去掉前8个字符、去掉后8个字符,取中间的16个字符,就是16位字符的版本,通过在线生成工具,能验证这一点。

MD5 信息摘要算法_公众号


MD5 信息摘要算法_数据_02

java版md5

注意,生成的字符数,可能小于32位,前边要补零

MessageDigest md5 =  MessageDigest.getInstance("md5");
String str = "你好 中国134";
byte[] digest = md5.digest(str.getBytes(StandardCharsets.UTF_8));
String s = new BigInteger(1, digest).toString(16);
//信息摘要是:8b4cf756b8f77ac9fc06258a2b6e93f,长度:31
log.info("信息摘要是:{},长度:{}",s,s.length());