MD5流程以及安全性分析,MD5加盐,MD6,笔记

本文介绍了MD5的实现步骤,包括信息填充、链接变量设置和主循环,强调了MD5的不安全性,特别是碰撞攻击。同时讨论了MD5加盐策略以增强安全性,并提到了MD6作为MD5的后续改进算法。
摘要由CSDN通过智能技术生成

版权归其所有论文作者所有。

并没写原始的地址,因为这是我整合的,作者太多,包括我。太匆忙,原作者可以联系我。

简介

MD5适用于数据完整性校验的。将任意长度的字节串(所以是基于底层的二进制串的),映射成为一个128位的大整数2^128种可能性。同样的内容经过md5,会得到同样的128位码。本质上是散列算法,有损的信息压缩,并且是不可逆的。

MD5广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。

 

一个安全的散列算法具有如下特点:

 

(1)仅从散列值无法反推出原信息;

 

(2)两个不同数字信息产生同样的散列值的概率是非常小的,几乎为零;

 

(3)原信息的微小改变(哪怕只改变一位),将导致散列值的很大变化。

 

线性同余随机数服从均匀分布

2 实现步骤

2.1 填充

在MD5算法中,首先需要对信息进行填充,使其字节长度对512求余数的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后再在这个结果后面附加一个以64位二进制表示的填充前的信息长度。经过这两步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍数。这样做的原因是为满足后面处理中对信息长度的要求。

 

 

2.2 设置链接变量

MD5中有四个32位被称作链接变量(ChainingVariable)的整数参数,他们分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。当设置好这四个链接变量后,就开始进入算法的四轮循环运算,循环的次数是信息中512位信息分组的数目。

 

2.3 进行主循环

 

接着进行算法的主循环,循环的次数是消息中512位消息分组的数目。

 

将上面四个变量复制到别外的变量中:A到a,B到b,C到c,D到d。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值