📄 chap6-3-5.htm.primary
字号:
<html>
<head>
<title>Crack Tutorial</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="style/css.css" type="text/css">
<link rel="stylesheet" href="../STYLE/Css.css" type="text/css">
</head>
<body bgcolor="white" text="#000000" link="#004080" vlink="#004080" background="../image/Back.gif">
<p><a href="../catalog.htm">目录</a>>>第6章</p>
<p align="center" class="shadow1Copy"><b class="p3">第6章 软件保护技术</b></p>
<table width="80%" border="0" cellspacing="0" cellpadding="3" align="center" bgcolor="#bcbcbc" bordercolor="#111111" class="shadow1">
<tr>
<td class="shadow1" width="25%">
<div align="center"><a href="Chap6-1.htm"><font color="#FFFFFF">第一节 常见保护技巧</font></a></div>
</td>
<td class="shadow1" width="25%">
<div align="center"><a href="Chap6-2.htm"><font color="#FFFFFF">第二节 反跟踪技术</font></a></div>
</td>
<td class="shadow1" width="25%">
<div align="center"><a href="Chap6-3.htm"><font color="#FFFFFF">第三节 加密算法</font></a></div>
</td>
<td class="shadow1" width="25%">
<div align="center"><a href="Chap6-4.htm"><font color="#FFFFFF">第四节 软件保护建议</font></a></div>
</td>
</tr>
</table>
<p align="center"><span class="p9"><b>第三节 加密算法</b></span></p>
<table border="1" width="80%" cellpadding="5" bordercolor="#111111" bgcolor="#efefef" align="center" cellspacing="0">
<tr>
<td width="33%" valign="middle" align="center" class="p9" height="23">
<div align="left" class="p"><span class="p9"><span class="p9"> <span class="p9">1、<a href="Chap6-3-1.htm">RSA算法</a></span></span></span></div>
</td>
<td width="33%" valign="middle" align="center" class="p9" height="23">
<div align="left"><span class="p9"><span class="p9"> <span class="p9">2、<a href="Chap6-3-2.htm">DES算法</a></span></span></span></div>
</td>
<td width="34%" valign="top" class="p9" height="23">
<div align="left"><span class="p9"><span class="p9"> <span class="p9">3、<a href="Chap6-3-3.htm">ElGamal算法</a></span></span></span></div>
</td>
</tr>
<tr>
<td width="33%" valign="middle" align="center" class="p9" height="23">
<div align="left"><span class="p9"><span class="p9"> <span class="p9">4、<a href="Chap6-3-4.htm">DSA算法</a></span></span></span></div>
</td>
<td width="33%" valign="middle" align="center" class="p9" height="23">
<div align="left"><span class="p9"><span class="p9"> <span class="p9">5、<a href="Chap6-3-5.htm">MD5算法</a></span></span></span></div>
</td>
<td width="34%" valign="top" class="p9" height="23">
<div align="left"><span class="p9"><span class="p9"> <span class="p9">6、<a href="Chap6-3-6.htm">BLOWFISH算法</a></span></span></span></div>
</td>
</tr>
</table>
<p align="center"><span class="p9"><span class="p9"><span class="p9"><b>5、MD5</b></span></span></span><b>算法</b></p>
<table width="100%" border="0" cellspacing="0">
<tr>
<td class="p9"> 在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。<br>
首先填充消息使其长度恰好为一个比512位的倍数仅小64位的数。填充方法是附一个1在消息后面,后接所要求的多个0,然后在其后附上64位的消息长度(填充前)。这两步的作用是使消息长度恰好是512位的整数倍(算法的其余部分要求如此),同时确保不同的消息在填充后不相同。<br>
四个32位变量初始化为:<br>
A=0x01234567<br>
B=0x89abcdef<br>
C=0xfedcba98<br>
D=0x76543210<br>
它们称为链接变量(chaining variable)<br>
接着进行算法的主循环,循环的次数是消息中512位消息分组的数目。<br>
将上面四个变量复制到别外的变量中:A到a,B到b,C到c,D到d。<br>
主循环有四轮(MD4只有三轮),每轮很相拟。第一轮进行16次操作。每次操作对a,b,c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a,b,c或d中之一。最后用该结果取代a,b,c或d中之一。<br>
以一下是每次操作中用到的四个非线性函数(每轮一个)。<br>
F(X,Y,Z)=(X&Y)|((~X)&Z)<br>
G(X,Y,Z)=(X&Z)|(Y&(~Z))<br>
H(X,Y,Z)=X^Y^Z<br>
I(X,Y,Z)=Y^(X|(~Z))<br>
(&是与,|是或,~是非,^是异或)<br>
这些函数是这样设计的:如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。<br>
函数F是按逐位方式操作:如果X,那么Y,否则Z。函数H是逐位奇偶操作符。<br>
设Mj表示消息的第j个子分组(从0到15),<<<s表示循环左移s位,则四种操作为:<br>
FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)<<<s)<br>
GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)<<<s)<br>
HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)<<<s)<br>
II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<<s)<br>
这四轮(64步)是:<br>
第一轮<br>
FF(a,b,c,d,M0,7,0xd76aa478)<br>
FF(d,a,b,c,M1,12,0xe8c7b756)<br>
FF(c,d,a,b,M2,17,0x242070db)<br>
FF(b,c,d,a,M3,22,0xc1bdceee)<br>
FF(a,b,c,d,M4,7,0xf57c0faf)<br>
FF(d,a,b,c,M5,12,0x4787c62a)<br>
FF(c,d,a,b,M6,17,0xa8304613)<br>
FF(b,c,d,a,M7,22,0xfd469501)<br>
FF(a,b,c,d,M8,7,0x698098d8)<br>
FF(d,a,b,c,M9,12,0x8b44f7af)<br>
FF(c,d,a,b,M10,17,0xffff5bb1)<br>
FF(b,c,d,a,M11,22,0x895cd7be)<br>
FF(a,b,c,d,M12,7,0x6b901122)<br>
FF(d,a,b,c,M13,12,0xfd987193)<br>
FF(c,d,a,b,M14,17,0xa679438e)<br>
FF(b,c,d,a,M15,22,0x49b40821)<br>
第二轮<br>
GG(a,b,c,d,M1,5,0xf61e2562)<br>
GG(d,a,b,c,M6,9,0xc040b340)<br>
GG(c,d,a,b,M11,14,0x265e5a51)<br>
GG(b,c,d,a,M0,20,0xe9b6c7aa)<br>
GG(a,b,c,d,M5,5,0xd62f105d)<br>
GG(d,a,b,c,M10,9,0x02441453)<br>
GG(c,d,a,b,M15,14,0xd8a1e681)<br>
GG(b,c,d,a,M4,20,0xe7d3fbc8)<br>
GG(a,b,c,d,M9,5,0x21e1cde6)<br>
GG(d,a,b,c,M14,9,0xc33707d6)<br>
GG(c,d,a,b,M3,14,0xf4d50d87)<br>
GG(b,c,d,a,M8,20,0x455a14ed)<br>
GG(a,b,c,d,M13,5,0xa9e3e905)<br>
GG(d,a,b,c,M2,9,0xfcefa3f8)<br>
GG(c,d,a,b,M7,14,0x676f02d9)<br>
GG(b,c,d,a,M12,20,0x8d2a4c8a)<br>
第三轮<br>
HH(a,b,c,d,M5,4,0xfffa3942)<br>
HH(d,a,b,c,M8,11,0x8771f681)<br>
HH(c,d,a,b,M11,16,0x6d9d6122)<br>
HH(b,c,d,a,M14,23,0xfde5380c)<br>
HH(a,b,c,d,M1,4,0xa4beea44)<br>
HH(d,a,b,c,M4,11,0x4bdecfa9)<br>
HH(c,d,a,b,M7,16,0xf6bb4b60)<br>
HH(b,c,d,a,M10,23,0xbebfbc70)<br>
HH(a,b,c,d,M13,4,0x289b7ec6)<br>
HH(d,a,b,c,M0,11,0xeaa127fa)<br>
HH(c,d,a,b,M3,16,0xd4ef3085)<br>
HH(b,c,d,a,M6,23,0x04881d05)<br>
HH(a,b,c,d,M9,4,0xd9d4d039)<br>
HH(d,a,b,c,M12,11,0xe6db99e5)<br>
HH(c,d,a,b,M15,16,0x1fa27cf8)<br>
HH(b,c,d,a,M2,23,0xc4ac5665)<br>
第四轮<br>
II(a,b,c,d,M0,6,0xf4292244)<br>
II(d,a,b,c,M7,10,0x432aff97)<br>
II(c,d,a,b,M14,15,0xab9423a7)<br>
II(b,c,d,a,M5,21,0xfc93a039)<br>
II(a,b,c,d,M12,6,0x655b59c3)<br>
II(d,a,b,c,M3,10,0x8f0ccc92)<br>
II(c,d,a,b,M10,15,0xffeff47d)<br>
II(b,c,d,a,M1,21,0x85845dd1)<br>
II(a,b,c,d,M8,6,0x6fa87e4f)<br>
II(d,a,b,c,M15,10,0xfe2ce6e0)<br>
II(c,d,a,b,M6,15,0xa3014314)<br>
II(b,c,d,a,M13,21,0x4e0811a1)<br>
II(a,b,c,d,M4,6,0xf7537e82)<br>
II(d,a,b,c,M11,10,0xbd3af235)<br>
II(c,d,a,b,M2,15,0x2ad7d2bb)<br>
II(b,c,d,a,M9,21,0xeb86d391)<br>
常数ti可以如下选择:<br>
在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。<br>
(2的32次方)<br>
所有这些完成之后,将A,B,C,D分别加上a,b,c,d。然后用下一分组数据继续运行算法,最后的输出是A,B,C和D的级联。
<p>MD5的安全性</p>
<p>MD5相对MD4所作的改进:<br>
1.增加了第四轮.<br>
2.每一步均有唯一的加法常数.<br>
3.为减弱第二轮中函数G的对称性从(X&Y)|(X&Z)|(Y&Z)变为(X&Z)|(Y&(~Z))<br>
4.第一步加上了上一步的结果,这将引起更快的雪崩效应.<br>
5.改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似.<br>
6.近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应.各轮的位移量互不相同.</p>
</td>
</tr>
</table>
<div align="right"><br>
<span class="p9"><a href="http://gfcrack.yeah.net/" target="_blank">garfield</a>整理</span>
</div>
<p align="center"><a href="../Catalog.htm"><img src="../image/navtoc.gif" width="84" height="23" border="0"></a><a href="Chap6-3-4.htm"><img src="../image/Navprev.gif" width="80" height="23" border="0"></a><a href="Chap6-3-6.htm"><img src="../image/navnext.gif" width="83" height="23" border="0"></a></p>
<hr width=735>
<div align="center"><span class="p9"><font size="2"><span class="p9"><font size="2"><span class="p9">Copyright
© 2000-2001 <a href="http://www.pediy.com/">KanXue Studio</a> All Rights
Reserved.</span></font></span></font></span></div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -