MD5哈希函数:消息填充与分组加密详解

需积分: 0 0 下载量 158 浏览量 更新于2024-08-05 收藏 648KB PDF 举报
本资源主要介绍的是关于实验五:Hash函数MD5的相关知识,涉及到了消息填充、数据结构、加密过程以及程序功能。首先,实验的核心是理解MD5算法,这是一种广泛使用的哈希函数,常用于文件完整性校验和密码散列。 1. **消息填充**: - 消息填充的目的是将原始数据调整为512比特的整数倍,如果长度不足,则添加额外的比特。填充规则如下: - 若原始长度除以512余448,只需填充512比特,填充方式为最高位为1,其余为0。 - 如果原始长度刚好为512的倍数,则无需填充,但若余数大于0,则用剩余的比特填充,先填充长度的低64位。 2. **消息分组**: 明文被分割成每组512比特进行处理,这是MD5加密过程中对数据进行操作的基本单位。 3. **加密过程**: - 提供了一个名为`smallbit`的函数,用于将32位整数转换为小端格式,并将其低有效位存储在数组的低地址。这个函数在每一轮加密中对消息进行处理。 - 加密过程采用迭代方式,每轮使用四个不同的函数(enF, enG, enH, enI)进行计算,这些函数涉及到异或(XOR)、与(AND)、非(NOT)等操作。 4. **核心加密函数**: - 函数enF, enG, enH, enI分别对应不同的加密逻辑,如enF计算规则为(b&c)|(~b&d),其中b, c, d是输入数据的比特组合。 5. **字符串MD5计算**: - 实验可能涉及计算字符串的MD5散列值,用于验证数据的唯一标识。 6. **文件MD5计算**: - 通过MD5函数可以验证文件的完整性和一致性,通过计算文件的MD5值并与原始值对比来确定文件是否被篡改。 7. **数据结构**: - `newint`数据结构设计用于存储和处理小端形式的数据,这对于MD5加密中的内存管理至关重要。 8. **实验步骤与程序功能**: - 实验包括一系列加密轮次,通过循环调用不同的加密函数实现消息的加密。最终的运行结果会展示这些操作如何影响原始数据。 本资源涵盖了MD5函数在信息安全领域的基本应用,从数据准备到加密过程,以及相关的数据结构设计,旨在帮助学生深入理解MD5算法的工作原理和实际操作。