MD5密码的简单分析与代码实现

本文介绍了MD5密码加密算法的工作原理,包括附加填充位、初始化向量、分组处理和步函数四个步骤。MD5将任意长度的输入转化为固定长度的128比特输出。文中详细阐述了每个步骤,并提供了完整的Python代码实现。
摘要由CSDN通过智能技术生成

MD5算法是一种Hash函数的加密算法,输入的序列长度小于2^64比特,输出的长度则为固定的128比特,是一种单向加密。是通过直接构造复制的非线性关系实现单向性。大体的流程如下图所示:
在这里插入图片描述
算法的具体过程如下:

1. 附加填充位

在明文(二进制序列)的后面填充一个1和若干个0使得消息的长度模512与448同余。若原来的明文长度大于模512大于448,则填充的下一个512分组。例如原来的消息长度为500,则填充之后的长度为512+448。最后的64位存放消息的长度,不够的在后面补0直到64位为止。

2. 初始化向量

MD5使用32位的寄存器A,B,C,D,最开始存放的是4个固定的值:
A=0x01234567 B=0x89ABCDEF C=0xFEDCBA98 D=0x76543210
同时,在寄存器里面其实的小端序存储,在代码中实际上我们要变换顺序,例如A=0x67452301。

3. 分组处理

分组处理包括4轮。对应上图的HMD5。明文分成若干个512比特的分组,将4个寄存器里面的值和每一个512位的分组进行迭代,最后的散列值即为最后的MD5值。在这里插入图片描述
512位的分组又分解为16个32位分组,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值