介绍
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位字符的版本,通过在线生成工具,能验证这一点。


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());
本文介绍了MD5是一种广泛使用的128位密码散列函数,可生成32位或16位的散列值。32位版本是将128位数据转换成32个16进制字符,而16位版本则是取中间16个字符。此外,展示了Java中使用MessageDigest实例化MD5并计算字符串‘你好中国134’的MD5摘要,生成的字符数可能少于32位,并需在前面补零。
1442

被折叠的 条评论
为什么被折叠?



