MD5 信息摘要算法

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

介绍

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());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值