<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MD5</title>
	<atom:link href="https://www.aitaocui.cn/tag/257422/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Mon, 28 Nov 2022 07:20:26 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>MD5</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MD5(计算机算法)</title>
		<link>https://www.aitaocui.cn/article/369569.html</link>
					<comments>https://www.aitaocui.cn/article/369569.html#respond</comments>
		
		<dc:creator><![CDATA[方寸江湖]]></dc:creator>
		<pubDate>Mon, 28 Nov 2022 07:20:26 +0000</pubDate>
				<category><![CDATA[知识]]></category>
		<category><![CDATA[MD5]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=369569</guid>

					<description><![CDATA[MD5即Message-Digest Algorithm5（信息摘要算法5），是计算机广泛使用的散列算法之一（又译摘要算法、哈希算法）。经MD2、MD3和MD4发展而来，诞生于20...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>MD5即Message-Digest Algorithm5（信息摘要算法5），是计算机广泛使用的散列算法之一（又译摘要算法、哈希算法）。经MD2、MD3和MD4发展而来，诞生于20世纪90年代初。用于确保信息传输完整一致。虽然已被破解，但仍然具有较好的安全性，加之可以免费使用，所以仍广泛运用于数字签名、文件完整性验证以及口令加密等领域。MD5的全称是Message-digest Algorithm5（信息-摘要算法），用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一（又译摘要算法、哈希算法），主流编程语言普遍已有MD5实现。将数据（如汉字）运算为另一固定长度值，是杂凑算法的基础原理，MD5的前身有MD2、MD3和MD4。</p>
</article>
<p><img decoding="async" src="https://www.aitaocui.cn/wp-content/uploads/2022/08/20220828_630ba8e647ec0.jpg" /></p>
<article>
<h1>基本简介</h1>
<p>MD5的全称是Message-digest Algorithm5（中文译作信息摘要算法5），用于确保信息传输完整一致。是计算机广泛使用的散列算法之一。它经MD2、MD3和MD4发展而来，在20世纪90年代初诞生。</p>
<p>它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式（就是把一个任意长度的字节串变换成一定长的大整数）。不管是MD2、MD4还是MD5，它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似，但MD2的设计与MD4和MD5完全不同，那是因为MD2是为8位机器做过设计优化的，而MD4和MD5却是面向32位的电脑。</p>
<h1>发展历史</h1>
<div></div>
<p>1989年，Ronald L.Rivest开发出MD2算法。在这个算法中，首先对信息进行数据补位，使信息的字节长度是16的倍数。然后，以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。MD2的诞生揭开了人们对加密算法的新一轮研究。</p>
<p>很快有人发现如果忽略了检验和将产生MD2冲突。为了MD2的加强算法的安全性，Ronald L.Rivest又开发出MD3、MD4算法。</p>
<p>1991年，Rivest开发出技术上更为趋近成熟的MD5算法。它在MD4的基础上增加了“安全-带子”（safety-belts）的概念。虽然MD5比MD4稍微慢一些，但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法中，信息摘要的大小和填充的必要条件与MD5完全相同。Denboer和Bosselaers曾发现MD5算法中的假冲突（pseudo-collisions），但除此之外就没有其他被发现的加密后结果了。</p>
<h1>相关研究</h1>
<div></div>
<p>2004年8月17日的美国加州圣巴巴拉的国际密码学会议（Crypto2004）上，来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的报告，公布了MD系列算法的破解结果。宣告了世界通行密码标准MD5不再安全。</p>
<p>2008年，荷兰埃因霍芬技术大学科学家成功把2个可执行文件进行了MD5碰撞，使得这两个运行结果不同的程序被计算出同一个MD。2008年12月一组科研人员通过MD5碰撞成功生成了伪造的SSL证书，这使得在https协议中服务器可以伪造一些根CA的签名。</p>
<h1>破解方法</h1>
<p>对信息系统或者网站系统来说，MD5算法主要用在用户注册口令的加密，对于普通强度的口令加密，可以通过以下三种方式进行破解：</p>
<p>（1）在线查询密码。一些在线的MD5值查询网站提供MD5密码值的查询，输入MD5密码值后，如果在数据库中存在，那么可以很快获取其密码值。</p>
<p>（2）使用MD5破解工具。网络上有许多针对MD5破解的专用软件，通过设置字典来进行破解。</p>
<p>（3）通过社会工程学来获取或者重新设置用户的口令。</p>
<p>因此简单的MD5加密是没有办法达到绝对的安全的，因为普通的MD5加密有多种暴力破解方式，因此如果想要保证信息系统或者网站的安全，需要对MD5进行改造，增强其安全性。但对于公司以及普通用户来说，从算法上来破解MD5非常困难，因此MD5仍然算是一种安全的算法。</p>
<h1>加密原理</h1>
<p>MD5以512位分组来处理输入的信息，且每一分组又被划分为16个32位子分组，经过了一系列的处理后，算法的输出由四个32位分组组成，将这四个32位分组级联后将生成一个128位散列值。</p>
<p>在MD5算法中，首先需要对信息进行填充，使其字节长度对512求余数的结果等于448。因此，信息的字节长度（Bits Length）将被扩展至N*512+448，即N*64+56个字节（Bytes），N为一个正整数。填充的方法如下，在信息的后面填充一个1和无数个0个，直到满足上面的条件时才停止用0对信息的填充。</p>
<p>然后再在这个结果后面附加一个以64位二进制表示的填充前的信息长度。经过这两步的处理，现在的信息字节长度=N*512+448+64=(N+1)*512，即长度恰好是512的整数倍数。这样做的原因是为满足后面处理中对信息长度的要求。MD5中有四个32位被称作链接变量（Chaining Variable）的整数参数，他们分别为：A=0x01234567，B=0x89abcdef，C=0xfedcba98，D=0x76543210。当设置好这四个链接变量后，就开始进入算法的四轮循环运算，循环的次数是信息中512位信息分组的数目。</p>
<p>将上面四个链接变量复制到另外四个变量中：A到a，B到b，C到c，D到d。主循环有四轮（MD4只有三轮），每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算，然后将所得结果加上第四个变量（文本中的一个子分组和一个常数）。</p>
<p>再将所得结果向右环移一个不定的数，并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。以一下是每次操作中用到的四个非线性函数（每轮一个）。</p>
<p>F(X,Y,Z)=(X∧Y)∨((X)∧Z)</p>
<p>G(X,Y,Z)=(X∧Z)∨(Y∧(Z))</p>
<p>H(X,Y,Z)=X⊕Y⊕Z</p>
<p>I(X,Y,Z)=Y⊕(X∨(Z))</p>
<p>其中，⊕是异或，∧是与，∨是或，是反符号。如果X、Y和Z的对应位是独立和均匀的，那么结果的每一位也应是独立和均匀的。F是一个逐位运算的函数。即，如果X，那么Y，否则Z。函数H是逐位奇偶操作符。所有这些完成之后，将A，B，C，D分别加上a，b，c，d。然后用下一分组数据继续运行算法，最后的输出是A，B，C和D的级联。最后得到的A，B，C，D就是输出结果，A是低位，D为高位，DCBA组成128位输出结果。</p>
<h1>软件应用</h1>
<p>MD5加密算法由于其具有较好的安全性，加之商业也可以免费使用该算法，因此该加密算法被广泛使用，md5算法主要运用在数字签名、文件完整性验证以及口令加密等方面。</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/369569.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
