奇妙的安全旅行之MD算法

本文介绍了MD(Message Digest)算法家族,包括MD2、MD4和MD5,详细阐述了它们的发展历史、实现、对比及应用场景。尽管MD5在2004年被证实存在碰撞攻击风险,但在数据完整性校验等方面仍有广泛应用。文章讨论了MD5的不足,并提醒在高安全性需求场景下应谨慎使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
第1章 多项式计算 1.1 一维多项式求值 1.2 一维多项式多组求值 1.3 二维多项式求值 1.4 复系数多项式求值 1.5 多项式相乘 1.6 复系数多项式相乘 1.7 多项式相除 1.8 复系数多项式相除 1.9 实系数多项式类 1.10 复系数多项式类 第2章 复数运算 2.1 复数乘法 2.2 复数除法 2.3 复数乘幂 2.4 复数的n次方根 2.5 复数指数 2.6 复数对数 2.7 复数正弦 2.8 复数余弦 2.9 复数类 第3章 随机数的产生 3.1 产生0-1之间均匀分布的一个随机数 3.2 产生0-1之间均匀分布的随机数序列 3.3 产生任意区间内均匀分布的一个随机整数 3.4 产生任意区间内均匀分布的随机整数序列 3.5 产生任意均值与方差的正态分布的一个随机数 3.6 产生任意均值与方差的正态分布的随机数序列 第4章 矩阵运算 4.1 实矩阵相乘 4.2 复矩阵相乘 4.3 一般实矩阵求逆 4.4 一般复矩阵求逆 4.5 对称正定矩阵的求逆 4.6 托伯利兹矩阵求逆的特兰持方法 4.7 求一般行列式的值 4.8 求矩阵的秩 4.9 对称正定矩阵的乔里斯基分解与行列式求值 4.10 矩阵的三角分解 4.11 一般实矩阵的QR分解 4.12 一般实矩阵的奇异值分解 4.13 求广义逆的奇异值分解法 第5章 矩阵特征值与特征向量的计算 5.1 约化对称矩阵为对称三对角阵的豪斯荷尔德变换法 5.2 求对称三对角阵的全部特征值与特征向量 5.3 约化一般实矩阵为赫申伯格矩阵的初等相似变换法 5.4 求赫申伯格矩阵全部特征值的QR方法 5.5 求实对称矩阵特征值与特征向量的雅可比法 5.6 求实对称矩阵特征值与特征向量的雅可比过关法 第6章 线性代数方程组的求解 6.1 求解实系数方程组的全选主元高斯消去法 6.2 求解实系数方程组的全选主元高斯-约当消去法 6.3 求解复系数方程组的全选主元高斯消去法 6.4 求解复系数方程组的全选主元高斯-约当消去法 6.5 求解三对角线方程组的追赶法 6.6 求解一般带型方程组 6.7 求解对称方程组的分解法 6.8 求解对称正定方程组的平方根法 6.9 求解托伯利兹方程组的列文逊方法 6.10 高斯-赛德尔迭代法 6.11 求解对称正定方程组的共轭梯度法 6.12 求解线性最小二乘问题的豪斯荷尔德变换法 6.13 求解线性最小二乘问题的广义逆法 6.14 求解病态方程组 第7章 非线性方程与方程组的求解 7.1 求非线性方程实根的对分法 7.2 求非线性方程一个实根的牛顿法 7.3 求非线性方程一个实根的埃特金迭代法 7.4 求非线性方程一个实根的试位法 7.5 求非线性方程一个实根的连分式法 7.6 求实系数代数方程全部根的QR方法 7.7 求实系数代数方程全部根的牛顿下山法 7.8 求复系数代数方程全部根的牛顿下山法 …… 第8章 插值与逼近 第9章 数值积分 第10章 常微分方程组的求解 第11章 数据处理 第12章 极值问题的求解 第13章 数学变换与滤波 第14章 特殊函数的计算 第15章 排序 第16章 查找 参考文献 作者介绍
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值