MD5全称“MD5 Message-Digest Algorithm”,中文译作“消息摘要算法”是一种被称为密码散列算法的算法,MD5生成十六进制格式的散列值,这与其他哈希函数接受特定数据片段并将其更改为提供可用于替代原始值的键或值的设计相竞争。

消息摘要算法特征

消息摘要,也称为散列函数,是单向函数,它们接受任何大小的消息作为输入,并生成固定长度的消息摘要作为输出。

MD5是Rivest创建的第三个消息摘要算法,这三个(其他两个分别是MD2和MD4)具有类似的结构,但是MD2针对8位机器进行了优化,而后面的两个公式针对32位机器进行了优化。

MD5算法是MD4的扩展,评论界认为它是快速的,但可能不是绝对安全的。相比之下,MD5虽然没有MD4算法那么快,但是在数据安全性方面提供了更多的保证。

MD5是如何工作的?

MD5消息摘要哈希算法处理512位块中的数据,将数据分解为16个字,每个字由32位组成。MD5的输出是一个128位的消息摘要值。

MD5摘要值的计算是在单独的阶段中执行的,这些阶段处理每个512位数据块以及前一阶段计算的值。第一阶段从使用连续十六进制数值初始化的消息摘要值开始。

每个阶段包括四个消息摘要传递,它们操作当前数据块中的值和前一个块中处理的值,从最后一个块计算的最终值成为该块的MD5摘要。

MD5安全

任何消息摘要函数的目标都是生成随机的摘要,要被认为是加密安全的,哈希函数应该满足两个要求:首先,攻击者不可能生成匹配特定哈希值的消息;其次,攻击者不可能创建两个产生相同散列值的消息。

MD5散列不再被认为是加密安全的,它们不应该用于加密身份验证。