💡
原文中文,约5000字,阅读约需12分钟。
📝
内容提要
本文介绍了 md5 算法的计算过程,包括数据填充和分组计算迭代。数据填充包括在数据后面拼接一个 int64 类型的数据,使得填充后的长度是 64(字节) 的倍数。分组计算迭代包括将每个分组按照每64字节进行拆分,然后进行4组不同的计算规则,每组规则计算16次,共16*4轮迭代计算。最后,将得到4个经过很多次迭代的 int 数字,转为16进制输出即可。
🎯
关键要点
-
md5 算法是一个常用的哈希函数,尽管已被证明不安全,但仍广泛应用。
-
哈希函数的特点包括将任意长度字符串映射为固定长度、源数据微小改动导致结果差异巨大、不可逆和暴力破解困难。
-
本文仅介绍 md5 的计算过程,不涉及其安全性证明。
-
md5 的计算过程包括数据填充和分组计算迭代。
-
数据填充步骤包括在数据后拼接一个 int64 类型的数据,使填充后的长度为 64 字节的倍数。
-
以字符串 'hello' 为例,填充后的数据长度为 64 字节。
-
分组计算迭代将数据按每 64 字节拆分,进行 4 组不同的计算规则,每组规则计算 16 次,共 64 次迭代计算。
-
每组计算中,使用不同的计算规则和魔数进行迭代。
-
最终得到的 4 个经过多次迭代的 int 数字将被转为 16 进制输出。
-
代码实现部分展示了 md5 算法的具体实现细节,供读者参考和学习。
➡️