MD5算法分析

1、 MD5是什么?

MD5即Message-Digest Algorithm 5(消息摘要算法第五版)的简称,是当前计算机领域用于确保信息传输完整一致而广泛使用的散列算法之一(又译哈希算法、摘要算法等),主流编程语言普遍已有MD5的实现。

2、 什么是散列算法?

在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的“散列”或“消息摘要”(Message digest)。

3、 散列函数的基本特性

散列函数必须具备两个基本特征:单向性和碰撞约束。

3.1、单向性是指其的操作方向的不可逆性,在散列函数中是指只能从输入推导出输出,而不能从输出计算出输入;

3.2、碰撞约束是指不能找到一个输入使其输出结果等于一个已知的输出结果 或者不能同时找到两个不同的输入使其输出结果完全一致。

一个函数只用同时严格的具备了这样的特性,我们才能认可这样的一个HASH。

4、单向性的典型运用:

4.1、密码加密

利用散列函数的单向性,我们能够实现口令,密码等安全数据的安全存储。密码等很多关键数据我们需要在数据库中存储,但是在实际运用的过程中,只是作比较操作,因此我们可以比较HASH结果。

5、碰撞约束的典型运用:

5.1、用做字典的键(可哈希)

在python内部是通过字典key的散列值来对应内存中的value地址的,所以两个相同hash的key就表示同一个了,而不可hash的对象自然也不能作为字典的key。

5.2、信息摘要和数字签名

通过对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:

MD5(wenjian.tar.gz)=0ca175b9c0f726a831d895e269332461

这就是wenjian.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算MD5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。

6、MD5的弱点

MD5算法较老,散列长度固定为128比特,随着计算机运算能力提高,更快地找到“碰撞”是有可能的。因此,在安全要求高的场合不应再使用MD5。

2004年,王小云证明MD5数字签名算法可能被快速生成“碰撞”。2007年,Marc Stevens,Arjen K. Lenstra和Benne de Weger进一步指出通过伪造软件签名,可重复性攻击MD5算法。研究者使用前缀碰撞法(chosen-prefix collision),使程序前端包含恶意程序,利用后面的空间添上垃圾代码凑出同样的MD5散列值。

2007年,荷兰埃因霍芬技术大学科学家成功把2个可执行文件进行了MD5碰撞,使得这两个运行结果不同的程序会被计算出同一个MD5值。2008年12月一组科研人员通过MD5碰撞成功生成了伪造的SSL证书,这使得在https协议中服务器可以伪造一些根CA的签名。

MD5算法分析

时间: 2024-08-15 08:19:27

MD5算法分析的相关文章

[MD5变形算法练习] AutoRun Design Specialty算法分析

[破文标题][MD5变形算法练习] AutoRun Design Specialty算法分析[破文作者]静心学习[作者邮箱][email protected][作者主页]http://www.cnblogs.com/dacainiao/[破解工具]OD, DEDE, IDA[破解平台]xp sp3[软件名称]AutoRun Design Specialty[软件大小]6.98MB[原版下载]http://www.alleysoft.com/autorundesignspecialty/ARDSS

[MD5算法练习] MD5CrackMe算法分析

[破文标题][MD5算法练习] MD5CrackMe算法分析[破文作者]静心学习[作者邮箱][email protected][作者主页]http://www.cnblogs.com/dacainiao/[破解工具]OD[破解平台]xp sp3[软件名称]MD5CrackMe[软件大小]72KB[原版下载]http://pan.baidu.com/share/link?shareid=1620370201&uk=892352529[保护方式]无壳[软件简介]一个MD5算法练习的CrackMe[破

[MD5算法练习] Arial CD Ripper 1.9.8算法分析

[破文标题][MD5算法练习] Arial CD Ripper 1.9.8算法分析[破文作者]静心学习[作者邮箱][email protected][作者主页]http://www.cnblogs.com/dacainiao/[破解工具]OD, DEDE, IDA[破解平台]xp sp3[软件名称]Arial CD Ripper 1.9.8[软件大小]1833KB[原版下载]http://www.onlinedown.net/soft/31096.htm[保护方式]无壳[软件简介]一款界面友好的

登录与注册的加密算法分析

登录与注册的加密算法分析 算法目的 提供固定的 秘钥 和 明文 能够产生不同的密文摘要 hamc 算法 大概流程是 使用一个秘钥 对明文进行两次散列操作得到密文摘要 哈希(散列)函数 MD5 SHA1 SHA256 注册 向服务器请求一个随机的秘钥 把注册的密码进行 md5.hmac(hamc使用md5的散列函数来操作字符)加密 : md5.hmac(key,message) ==> 密文摘要(key : 秘钥 , message : 明文) : md5.hmac密文摘要 把摘要提交到服务器,同

Java算法分析与设计视频教程下载

下载地址:http://pan.baidu.com/s/1i4pMZ9z 密码:v9ra 算法分析与设计Java版,是一套实用型算法课程.通过本课程的学习,学员可以掌握以下技术点:线性结构与顺序表.单向链表.循环链表.栈的基本概念.链式堆栈.中缀表达式.队列.链式队列.串.MyString.Brute-Force算法.MySet类实现.矩阵类.递归算法.哈夫曼树.希尔排序.HashTable算法等内容. 第一讲.算法基本概述.抽象数据类型 第二讲.算法的设计目标.时间复杂度和空间复杂度 第三讲.

Java实战应用视频教程之Java算法分析与设计

实战应用Java算法分析与设计(链表.二叉树.哈夫曼树.图.动态规划.HashTable算法)适合人群:中级课时数量:38课时用到技术:Java算法涉及项目:案例应用实战咨询qq:1840215592课程简介:算法分析与设计Java版,是一套实用型算法课程.通过本课程的学习,学员可以掌握以下技术点:线性结构与顺序表.单向链表.循环链表.栈的基本概念.链式堆栈.中缀表达式.队列.链式队列.串.MyString.Brute-Force算法.MySet类实现.矩阵类.递归算法.哈夫曼树.希尔排序.Ha

信息摘要算法之五:HMAC算法分析与实现

MAC(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加上了密钥.因此MAC算法也经常被称作HMAC算法. 1.HMAC概述 HMAC算法首先它是基于信息摘要算法的.目前主要集合了MD和SHA两大系列消息摘要算法.其中MD系列的算法有HmacMD2.HmacMD4.HmacMD5三种算法:SHA系列的算法有HmacSHA1.HmacSHA224.HmacSHA256.HmacSHA384.HmacSHA5

简单算法分析2 ------适合新手学习算法分析

自从发表了第一篇算法分析文章起,自己打心底上就喜欢上算法分析了,O(∩_∩)O哈哈~. 好了,今天继续分享一个简单的算法分析文章,虽然也是参考别人的文章,但是只学理论不去实践的话,永远都开不到东西,所以我选择了自己动手跟着别人的分析文章走,然后再结合自己的思路来进行分析,写注册机. 本文参考文章:http://blog.sina.com.cn/u/2295763487 [软件名称]: SecureExplore 3.3[下载地址]: http://www.onlinedown.net/soft/

iPhone6plus 的 iOS 11 GM和正式版安装包的 md5一模一样

同上:chens-MacBook-Air:~ chen$ md5 /Users/chen/Downloads/iPhone_5.5_11.0_15A372_Restore.ipsw MD5 (/Users/chen/Downloads/iPhone_5.5_11.0_15A372_Restore.ipsw) = 0473f217af0f20e138649385de6db6c7GM 版本的 md5 chens-MacBook-Air:~ chen$ md5 /Users/chen/Download