奇妙的安全旅行之MD算法

hi,大家好,今天我们开始介绍消息摘要算法中的MD(Message Digest)算法,MD算法家族包括:MD2,MD4,MD5,MD算法生成的消息摘长度要都是128位的。

其中MD5算法是消息摘要算法的第五个版本,是当前最典型的消息摘要算法,它是由MD2和MD4算法改进而来的。不论是哪一种MD算法,它们都需要获得一个随机长度的信息并产生一个128位长度的信息摘要。如果将这个128位的二进制摘要信息换算成十六进制,就可以得到一个32位长的字符串,所以平时我们见到的大部分MD5算法生成的字符串都是一个32位长的十六进制的字符串。

从安全性上说:MD5 > MD4 > MD2,MD5算法安全性最高。

MD 算法家族的发展史:
MD2 算法:

1989年,著名的非对称算法RSA发明人之一麻省理工学院教授罗纳德·李维斯特教授开发了MD2算法。这个算法首先对信息进行数据补位,使信息的字节长度是16的倍数;再以一个16位的检验和做为补充信息追加到原信息的末尾;最后根据这个新产生的信息计算出一个128位的散列值,MD2算法由此诞生。

MD4 算法:

1990年,罗纳德·李维斯特教授开发出较之MD2算法有着更高安全性的MD4算法。在这个算法中,我们仍需对信息进行数据补位。不同的是,这种补位使其信息的字节长度加上448个字节后成为512的倍数(信息字节长度mod 512 = 448)。此外,关于MD4算的处理和MD2算法有很大的差别,但最终仍旧会获得一个长度为128位的散列值。MD4算法对后续消息摘要算法起到了推动作用, 许多比较有名的消息摘要算法都是在MD4算法的基础上发展而来的,例如MD5、SHA-1、RIPE-MD和HAVAL算法等。

MD5 算法:

1991年,继MD4算法后,罗纳德.李维斯特教授开发了MD5算法,最终将MD系列算法推向了成熟。MD5算法经MD2和MD4算法发展而来,算法复杂程度和安全强度也大大提高,但这些MD算法的最终结果都是产生一个128位长度的信息摘要,这也是MD系列算法的主要特点。

MD 算法的对比
算法 摘要长度(bit) 实现方
MD2 128 JDK、Bouncy Castle、Commons Codec
MD4 128 Bouncy Castle
MD5 128 JDK、Bouncy Castle、Commons Codec
  • MD2,MD4,MD5 计算的结果都是是一个128位(即16字节)的散列值,用于确保数据信息的完整一致性。
  • MD2 算法加密速度较慢但相对安全,MD4 速度很快,但安全性下降,MD5 则比 MD4 更安全、速度更快。
  • MD5 算法被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。
  • 2004年,证实MD5 算法无法防止碰撞攻击,因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。对于需要高度安全性的数据,一般建议改用其他更安全不容易破解的算法,如SHA-2。
MD 算法实现
JDK提供的 MD2 和 MD5 算法实现

Java的jdk中提供了MD2和MD5算法的实现,如果想实现MD5,可以直接使用JDk提供的方法来实现,示例代码如下所示:

// MD2加密
public static String encodeMd2(byte
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值