?? 如何實現des算法 - 華夏黑客同盟 - http--www_77169_org.htm
字號:
cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=center width="3%"><IMG height=14
src="如何實現DES算法 - 華夏黑客同盟 - Http--www_77169_org.files/arrow.gif"
width=11 align=absMiddle></TD>
<TD width="66%">如何實現DES算法</TD>
<TD
width="18%"> <FONT
color=#009900></FONT></TD>
<TD align=right width="13%">【字體:<A class=top_UserLogin
href="javascript:fontZoomA();">小</A> <A class=top_UserLogin
href="javascript:fontZoomB();">大</A>】</TD></TR></TBODY></TABLE></TD></TR>
<TR vAlign=center align=middle>
<TD class=main_ArticleTitle style="WORD-BREAK: break-all" colSpan=2
height=50>如何實現DES算法</TD></TR>
<TR vAlign=center align=middle>
<TD class=main_ArticleSubheading style="WORD-BREAK: break-all" colSpan=2
height=20></TD></TR>
<TR class=left_tdbgall align=middle>
<TD
colSpan=2>作者:Matthew Fischer 文章來源:來自網絡 點擊數:
<SCRIPT language=javascript src=""></SCRIPT>
更新時間:2004-7-15</TD></TR>
<TR>
<TD class=main_tdbg_760 id=fontzoom style="WORD-BREAK: break-all" vAlign=top
colSpan=2 height=300>
<OBJECT
codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0
height=78 width=756 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM NAME="movie" VALUE="/AD/UploadADPic/200406/20040601033758671.swf"><PARAM NAME="wmode" VALUE="transparent"><PARAM NAME="quality" VALUE="high">
<embed src='/AD/UploadADPic/200406/20040601033758671.swf'
pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'
type='application/x-shockwave-flash' width='756'
height='78'></embed></OBJECT><FONT color=#ffffff>轉貼于 華夏黑客同盟
http://www.77169.org</FONT>
<P>
<P style="LINE-HEIGHT: 150%" align=center><B><FONT color=#4444bb
size=3>如何實現<FONT face=Verdana size=3>DES</FONT>算法</FONT></B></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT size=2><FONT
color=#4444bb>原文:<FONT face=Verdana size=3>Matthew
Fischer</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT color=#4444bb
size=2>翻譯:小榕軟件實驗室</FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>DES( Data Encryption Standard)</FONT><FONT
size=3>算法,于</FONT><FONT face=Verdana size=3>1977</FONT><FONT
size=3>年得到美國政府的正式許可,是一種用</FONT><FONT face=Verdana size=3>56</FONT><FONT
size=3>位密鑰來加密</FONT><FONT face=Verdana size=3>64</FONT><FONT
size=3>位數據的方法。</FONT><FONT face=Verdana size=3>DES</FONT><FONT
size=3>算法以被應用于許多需要安全加密的場合。(如:</FONT><FONT face=Verdana
size=3>UNIX</FONT><FONT size=3>的密碼算法就是以</FONT><FONT face=Verdana
size=3>DES</FONT><FONT size=3>算法為基礎的)。下面是關于如何實現</FONT><FONT face=Verdana
size=3>DES</FONT><FONT size=3>算法的語言性描述,如果您要其源代碼,可以到</FONT><FONT
face=Verdana size=3>Http//Assassin.yeah.net</FONT><FONT
size=3>下載,后者您有任何問題也可以寫信給我(</FONT><FONT face=Verdana
size=3>Assassin@ynmail.com</FONT><FONT size=3>)。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>1-1</FONT><FONT size=3>、變換密鑰</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb>取得<FONT
face=Verdana size=3>64</FONT><FONT size=3>位的密鑰,每個第</FONT><FONT
face=Verdana size=3>8</FONT><FONT
size=3>位作為奇偶校驗位。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>1-2</FONT><FONT size=3>、變換密鑰。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT color=#4444bb><FONT
size=2>1-2-1</FONT><FONT size=3>、舍棄<FONT face=Verdana
size=3>64</FONT>位密鑰中的奇偶校驗位,根據下表(<FONT face=Verdana
size=3>PC-1</FONT>)進行密鑰變換得到<FONT face=Verdana
size=3>56</FONT>位的密鑰,在變換中,奇偶校驗位以被舍棄。</FONT></FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>Permuted Choice 1 (PC-1)</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>57 49 41 33 25 17 9</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>1 58 50 42 34 26 18</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>10 2 59 51 43 35 27</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>19 11 3 60 52 44 36</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>63 55 47 39 31 23 15</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>7 62 54 46 38 30 22</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>14 6 61 53 45 37 29</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>21 13 5 28 20 12 4</FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>1-2-2</FONT><FONT size=3>、將變換后的密鑰分為兩個部分,開始的</FONT><FONT
face=Verdana size=3>28</FONT><FONT size=3>位稱為</FONT><FONT face=Verdana
size=3>C[0]</FONT><FONT size=3>,最后的</FONT><FONT face=Verdana
size=3>28</FONT><FONT size=3>位稱為</FONT><FONT face=Verdana
size=3>D[0]</FONT><FONT size=3>。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>1-2-3</FONT><FONT size=3>、生成</FONT><FONT face=Verdana
size=3>16</FONT><FONT size=3>個子密鑰,初始</FONT><FONT face=Verdana
size=3>I=1</FONT><FONT size=3>。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>1-2-3-1</FONT><FONT size=3>、同時將</FONT><FONT face=Verdana
size=3>C[I]</FONT><FONT size=3>、</FONT><FONT face=Verdana
size=3>D[I]</FONT><FONT size=3>左移</FONT><FONT face=Verdana
size=3>1</FONT><FONT size=3>位或</FONT><FONT face=Verdana
size=3>2</FONT><FONT size=3>位,根據</FONT><FONT face=Verdana
size=3>I</FONT><FONT size=3>值決定左移的位數。見下表</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT size=2><FONT
color=#4444bb><FONT face=Verdana>I</FONT><FONT size=3>: </FONT><FONT
face=Verdana size=3>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT size=2><FONT
color=#4444bb>左移位數: <FONT face=Verdana size=3>1 1 2 2 2 2 2 2 1 2 2 2 2 2
2 1</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>1-2-3-2</FONT><FONT size=3>、將</FONT><FONT face=Verdana
size=3>C[I]D[I]</FONT><FONT size=3>作為一個整體按下表(</FONT><FONT face=Verdana
size=3>PC-2</FONT><FONT size=3>)變換,得到</FONT><FONT face=Verdana
size=3>48</FONT><FONT size=3>位的</FONT><FONT face=Verdana
size=3>K[I]</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT color=#4444bb size=2> </FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>Permuted Choice 2 (PC-2)</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>14 17 11 24 1 5</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>3 28 15 6 21 10</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>23 19 12 4 26 8</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>16 7 27 20 13 2</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>41 52 31 37 47 55</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>30 40 51 45 33 48</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>44 49 39 56 34 53</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>46 42 50 36 29 32</FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>1-2-3-3</FONT><FONT size=3>、從</FONT><FONT face=Verdana
size=3>1-2-3-1</FONT><FONT size=3>處循環執行,直到</FONT><FONT face=Verdana
size=3>K[16]</FONT><FONT size=3>被計算完成。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT color=#4444bb size=2> </FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>2</FONT><FONT size=3>、處理</FONT><FONT face=Verdana
size=3>64</FONT><FONT size=3>位的數據</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>2-1</FONT><FONT size=3>、取得</FONT><FONT face=Verdana
size=3>64</FONT><FONT size=3>位的數據,如果數據長度不足</FONT><FONT face=Verdana
size=3>64</FONT><FONT size=3>位,應該將其擴展為</FONT><FONT face=Verdana
size=3>64</FONT><FONT size=3>位(例如補零)</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>2-2</FONT><FONT size=3>、將</FONT><FONT face=Verdana
size=3>64</FONT><FONT size=3>位數據按下表變換(</FONT><FONT face=Verdana
size=3>IP</FONT><FONT size=3>)</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>Initial Permutation (IP)</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>58 50 42 34 26 18 10 2</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>60 52 44 36 28 20 12 4</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>62 54 46 38 30 22 14 6</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>64 56 48 40 32 24 16 8</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>57 49 41 33 25 17 9 1</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>59 51 43 35 27 19 11 3</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>61 53 45 37 29 21 13 5</FONT></P>
<P style="LINE-HEIGHT: 150%" align=center><FONT face=Verdana color=#4444bb
size=2>63 55 47 39 31 23 15 7</FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>2-3</FONT><FONT size=3>、將變換后的數據分為兩部分,開始的</FONT><FONT
face=Verdana size=3>32</FONT><FONT size=3>位稱為</FONT><FONT face=Verdana
size=3>L[0]</FONT><FONT size=3>,最后的</FONT><FONT face=Verdana
size=3>32</FONT><FONT size=3>位稱為</FONT><FONT face=Verdana
size=3>R[0]</FONT><FONT size=3>。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>2-4</FONT><FONT size=3>、用</FONT><FONT face=Verdana
size=3>16</FONT><FONT size=3>個子密鑰加密數據,初始</FONT><FONT face=Verdana
size=3>I=1</FONT><FONT size=3>。</FONT></FONT></FONT></P>
<P style="LINE-HEIGHT: 150%"><FONT size=2><FONT color=#4444bb><FONT
face=Verdana>2-4-1</FONT><FONT size=3>、將</FONT><FONT face=Verdana
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -