三重DES加密算法原理與實(shí)現(xiàn)(二)

③ i=i+1,轉(zhuǎn)到 ①,直到生成16個(gè)全部自密鑰。

2、 對64位明文分組加密

1) 取得64位明文,不足補(bǔ)齊(補(bǔ)0)

2) 對明文各位按照IP矩陣進(jìn)行排列,矩陣為:

58 50 42 34 26 18 10 2

60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1

59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5

63 55 47 39 31 23 15 7

3) 將得到的結(jié)果分為左右各32位兩部分,稱為L0, R0

4) 從i=1開始,循環(huán)執(zhí)行16次下列的加密過程

① 按照下面矩陣E將32位的Ri-1擴(kuò)展為48位,所得結(jié)果稱為E( Ri-1),E陣為:

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

12 13 14 15 16 17

161718192021

202122232425

242526272829

28293031321

② 將E( Ri-1)和Ki按位異或

③ 將所得結(jié)果分為8個(gè)部分,每個(gè)部分6位,形成B[1],…B[8]

④ S盒替代。

S盒是8個(gè)子矩陣,稱為S[1],….S[8],替代如下:將B[i]的第1位和第6位組成一個(gè)數(shù)稱為R,第2、3、4、5位組成一個(gè)數(shù)稱為C,用S[i]中對應(yīng)的(R,C)中的4位數(shù)替換B[i],這樣就將原來的48位替換成32位。

⑤ P盒置換 ,按照下面的矩陣重新排列上面的結(jié)果

16 7 20 21

29 12 28 17

1 15 23 26

5 18 31 10

2 8 24 14

32 2 3 9

19 13 30 6

22 11 4 25

⑥ 將上一步處理的結(jié)果與Li-1按位異或,得到新的Ri,該過程可以簡單記為:Ri=Li-1⊕F(Ri-1,Ki)

⑦ i=i+1 轉(zhuǎn)④的第一步,直到完成16次循環(huán)

⑧ 進(jìn)行IP-1置換,將上面得到的L16R16按照下面的矩陣進(jìn)行置換:

40 8 48 16 56 24 64 32

39 7 47 15 55 23 63 31

38 6 46 14 54 22 62 30

37 5 45 13 53 21 61 29

36 4 44 12 52 20 60 28

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41 9 49 17 57 25

加密過程結(jié)束,解密過程是用K16,K15,…..K1

3、DES 算法的偽代碼表示

C[0]d[0]=PC1(KEY)

FOR I=1 TO 16

C[I]=LS[I](C[I-1])

D[I]=LS[I](D[I-1])

K[I]=PC2(C[I]D[I])

L[0]R[0]=IP(PLAIN BLOCK)

FOR I=1 TO 16

L[I]=R[I-1]

R[I]=L[I-1] ⊕F(R[I-1],K[I])

CIPHER BLOCK=FP-1(L[16]R[16])

四、 算法安全性分析

DES算法具有相當(dāng)高的復(fù)雜性, 密碼函數(shù)F的非線性性質(zhì)非常好, 起到的“ 擾亂” 效果非常顯著, 并且還遵循了嚴(yán)格雪崩準(zhǔn)則和比特獨(dú)立準(zhǔn)則, 這使得要破譯它的開銷要超過可能獲得的利益。再加上其便于理解掌握,經(jīng)濟(jì)有效, 因此, 得到了廣泛的應(yīng)用。算法具有極高的安全性, 到目前為止, 除了用窮舉搜索法對算法進(jìn)行攻擊外, 還沒有發(fā)現(xiàn)更有效的辦法。而56位長的密鑰的窮舉空間為256, 這意味著如果一臺(tái)計(jì)算機(jī)的速度是每一秒種檢測一百萬個(gè)密鑰, 則它搜索完全部密鑰就需要將近2300年的時(shí)間。而采用三重DES,破譯它就更可想而知了。當(dāng)然, 這并不等于說是不可破解的。而實(shí)際上, 隨著硬件技術(shù)和網(wǎng)絡(luò)的發(fā)展, 其破解的可能性越來越大, 而且, 所需要的時(shí)間越來越少。

DES算法的有效密鑰長度為56位,因此,在實(shí)際應(yīng)用中,我們應(yīng)避開使用第8,16,24,......64位作為有效數(shù)據(jù)位,才能保證DES算法安全可靠地發(fā)揮作用。如果不了解這一點(diǎn),將不能保證DES加密數(shù)據(jù)的安全性,對運(yùn)用DES來達(dá)到保密作用的系統(tǒng)產(chǎn)生數(shù)據(jù)被破譯的危險(xiǎn),這正是DES算法在應(yīng)用上的誤區(qū),留下了被人攻擊、被人破譯的極大隱患。

小知識之DES算法概念:

DES算法為密碼體制中的對稱密碼體制,又被成為美國數(shù)據(jù)加密標(biāo)準(zhǔn),是1972年美國IBM公司研制的對稱密碼體制加密算法。