族谱网 头条 人物百科

MD5

2017-10-16
出处:族谱网
作者:阿族小谱
浏览:608
转发:0
评论:0
历史与密码学1992年8月,罗纳德·李维斯特向IETF提交了一份重要文件,描述了这种算法的原理,由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。目前,MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的错误检查领域。例如在一些BitTorrent下载中,软件将通过计算MD5检验下载到的文件片段的完整性。应用MD5已经广泛使用在为文件传输提供一定的可靠性方面。例如,服务器预先提供一个MD5校验和,用户下载完文件以后,用MD5算法计算下载文件的MD5校验和,然后通过检查这两个校验和是否一致,就能判断下载的文件是否出错。MD5亦有应用于部分网上赌场以保证赌博的公平性,原理是系统先在玩家下注前已生成该局的结果,将该结果的字符串配合一组随机字符串利用MD5加密,将该加密字符串于玩...

历史与密码学

1992年8月,罗纳德·李维斯特向IETF提交了一份重要文件,描述了这种算法的原理,由于这种算法的公开性和安全性,在90年代被广泛使用在各种程序语言中,用以确保资料传递无误等。

MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。

目前,MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的错误检查领域。例如在一些BitTorrent下载中,软件将通过计算MD5检验下载到的文件片段的完整性。

应用

MD5已经广泛使用在为文件传输提供一定的可靠性方面。例如,服务器预先提供一个MD5校验和,用户下载完文件以后,用MD5算法计算下载文件的MD5校验和,然后通过检查这两个校验和是否一致,就能判断下载的文件是否出错。

MD5亦有应用于部分网上赌场以保证赌博的公平性,原理是系统先在玩家下注前已生成该局的结果,将该结果的字符串配合一组随机字符串利用MD5 加密,将该加密字符串于玩家下注前便显示给玩家,再在结果开出后将未加密的字符串显示给玩家,玩家便可利用MD5工具加密验证该字符串是否吻合。

例子: 在玩家下注骰宝前,赌场便先决定该局结果,假设生成的随机结果为4、5、 6大,赌场便会先利用MD5 加密“4, 5, 6”此字符串并于玩家下注前告诉玩家;由于赌场是无法预计玩家会下什么注,所以便能确保赌场不能作弊;当玩家下注完毕后,赌场便告诉玩家该原始字符串,即“4, 5, 6”,玩家便可利用MD5工具加密该字符串是否与下注前的加密字符串吻合。

该字符串一般会加上一组随机字符串 (Random string),以防止玩家利用碰撞 (Collision) 解密字符串,但如使用超级电脑利用碰撞亦有可能从加上随机字符串的加密字符串中获取游戏结果。随机字符串的长度与碰撞的次数成正比关系,一般网上赌场使用的随机字符串是长于20字,有些网上赌场的随机字符串更长达500字,以增加解密难度。

算法

MD5

  Figure 1. 一个MD5运算— 由类似的64次循环构成,分成4组16次。F 一个非线性函数;一个函数运算一次。Mi 表示一个 32-bits 的输入数据,Ki 表示一个 32-bits 常数,用来完成每次不同的计算。

MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算。得出结果。

⊕ ⊕ --> , ∧ ∧ --> , ∨ ∨ --> , ¬ ¬ --> {\displaystyle \oplus ,\wedge ,\vee ,\neg } 是 XOR, AND, OR , NOT 的符号。

伪代码

//Note: All variables are unsigned 32 bits and wrap modulo 2^32 when calculatingvarint[64]r,k//r specifies the per-round shift amountsr[0..15]:={7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}r[16..31]:={5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}r[32..47]:={4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}r[48..63]:={6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}//Use binary integer part of the sines of integers as constants:forifrom0to63k[i]:=floor(abs(sin(i+1))×2^32)//Initialize variables:varinth0:=0x67452301varinth1:=0xEFCDAB89varinth2:=0x98BADCFEvarinth3:=0x10325476//Pre-processing:append"1"bittomessageappend"0"bitsuntilmessagelengthinbits≡448(mod512)appendbitlengthofmessageas64-bitlittle-endianintegertomessage//Process the message in successive 512-bit chunks:foreach512-bitchunkofmessagebreakchunkintosixteen32-bitlittle-endianwordsw[i],0≤i≤15//Initialize hash value for this chunk:varinta:=h0varintb:=h1varintc:=h2varintd:=h3//Main loop:forifrom0to63if0≤i≤15thenf:=(bandc)or((notb)andd)g:=ielseif16≤i≤31f:=(dandb)or((notd)andc)g:=(5×i+1)mod16elseif32≤i≤47f:=bxorcxordg:=(3×i+5)mod16elseif48≤i≤63f:=cxor(bor(notd))g:=(7×i)mod16temp:=dd:=cc:=bb:=leftrotate((a+f+k[i]+w[g]),r[i])+ba:=tempNexti//Add this chunk"s hash to result so far:h0:=h0+ah1:=h1+bh2:=h2+ch3:=h3+dEndForEachvarintdigest:=h0appendh1appendh2appendh3//(expressed as little-endian)

MD5散列

一般128位的MD5散列被表示为32位十六进制数字。以下是一个43位长的仅ASCII字母列的MD5散列:

即使在原文中作一个(比如用c取代d)其散列也会发生巨大的变化:

空文的散列为:

缺陷

2009年谢涛和冯登国仅用了2的碰撞算法复杂度,破解了MD5的碰撞抵抗,该攻击在普通计算机上运行只需要数秒钟。

参见

MD2

MD4

SHA

AES

参考文献

^Tao Xie and Dengguo Feng.How To Find Weak Input Differences For MD5 Collision Attacks(PDF). 30 May 2009. 

碰撞

Two colliding Postscript files with the same size

Two colliding executable files

MD5 Collision, Visualised

Exploiting MD5 collisions, in C#

Fast MD5 Collision Generator

Hash Collisions within a Minute

工具

MD5 加密- 在线MD5散列发生器

MD5 在线计算器- 使用 JavaScript 技术制作的 MD5 安全计算器,含Android, Chrome 版本。

MD5 的VC++实现代码CSDN 下载频道:MD5 的VC++实现代码

www.cmd5.com- 应用MD5散列数据库查询

www.md5.com.cn- MD5反向查询破解

MD5 Crack online- Passwords Recovery by MD5 Rainbow Tables

md5.rednoize.com- MD5转换

us.md5.crysm.net- MD5 Reverse lookup

md5.mmkey.com- MD5搜集,相关程序源码

xmd5.org- MD5转换

MD5 Hash Example/Generator

MD5 Checksums for Linux and BSD Distributions

winMd5Sum- MD5值计算

MD4/MD5/SHA-1 加密

Pascal Unit


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱

更多文章

更多精彩文章
评论 {{commentTotal}} 文明上网理性发言,请遵守《新闻评论服务协议》
游客
发表评论
  • {{item.userName}} 举报

    {{item.content}}

    {{item.time}} {{item.replyListShow ? '收起' : '展开'}}评论 {{curReplyId == item.id ? '取消回复' : '回复'}}

    回复评论
加载更多评论
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回
打赏
私信

推荐阅读

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信