導航:首頁 > 源碼編譯 > idea演算法c

idea演算法c

發布時間:2024-10-31 03:39:16

⑴ 高分求C#版的IDEA演算法

1、IDEA基本概念
2、IDEA設計原理
3、IDEA加密過程
4、IDEA解密過程

3

IDEA(International Data Encryption Algorithm)是瑞士的James Massey,Xuejia Lai等人提出的加密演算法,在密碼學中屬於數據塊加密演算法(Block Cipher)類。

IDEA使用長度為128bit的密鑰,數據塊大小為64bit。從理論上講,IDEA屬於「強」加密演算法,至今還沒有出現對該演算法的有效攻擊演算法。

1. IDEA基本概念

4

早在1990年,Xuejia Lai等人在EuroCrypt』90年會上提出了分組密碼建議PES(Proposed Encryption Standard)。在EuroCrypt』91年會上, Xuejia Lai等人又提出了PES的修正版IPES(Improved PES)。目前IPES已經商品化,並改名為IDEA。IDEA已由瑞士的Ascom公司注冊專利,以商業目的使用IDEA演算法必須向該公司申請許可。

IDEA基本概念

5

IDEA是一個分組長度為64位的分組密碼演算法,密鑰長度為128位(抗強力攻擊能力比DES強),同一演算法既可加密也可解密。
IDEA能抗差分分析和相關分析;
IDEA似乎沒有DES意義下的弱密鑰;
IDEA的「混淆」和「擴散」設計原則來自三種運算,它們易於軟、硬體實現(加密速度快)

IDEA基本概念

6

異或運算( )
整數模216加( + )
整數模216+1乘( )(IDEA的S盒)
擴散由稱為MA結構的演算法基本構件提供。

Z6

F2

F1

Z5

G1

G2

IDEA運算

7

實現上的考慮
使用子分組:16bit的子分組;
使用簡單操作(易於加法、移位等操作實現)
加密解密過程類似;
規則的結構(便於VLSI實現)。

IDEA運算

8

2. IDEA設計原理

1 密碼的強度:主要是通過混淆和擴散來實現。

混淆實現的方法:

(1)逐比特異或。表示為

(2) 模 整數加法,表示為 ,其輸入和輸出作為

16位無符號整數處理。

模 整數乘法,表示為 ,其輸入和輸出中除16
全0作為 處理外,其餘都作為16位無符號整數處理。

9

例如
0000000000000000⊙1000000000000000
=1000000000000001
這是因為216×215 mod (216+1)=215+1。

IDEA設計原理

10

表3.6給出了操作數為2比特長時3種運算的運算表。在以下意義下,3種運算是不兼容的:

① 3種運算中任意兩種都不滿足分配律,例如 a + (b ⊙ c)≠(a + b ) ⊙ (a + c )

② 3種運算中任意兩種都不滿足結合律,例如 a +(b � c)≠(a + b ) � c

+

IDEA設計原理

11

3種運算結合起來使用可對演算法的輸入提供復雜的變換,從而使得對IDEA的密碼分析比對僅使用異或運算的DES更為困難。

演算法中擴散是由稱為乘加(multiplication/addition, MA)結構(見圖4.14)的基本單元實現的。

該結構的輸入是兩個16比特的子段和兩個16比特的子密鑰,輸出也為兩個16比特的子段。這一結構在演算法中重復使用了8次,獲得了非常有效的擴散效果。

IDEA設計原理

12

IDEA演算法的擴散主要是由乘加結構的基本單元實現的。

IDEA的MA結構

13

IDEA加密的總體方案

循環2

循環8

循環1

輸出變換

64位密文

64位明文

Z1

Z6

Z7

Z12

Z43

Z48

Z49

Z52

子密鑰生成器

128位密鑰

Z1

Z52

16

14

IDEA加密的總體方案圖

15

IDEA加密過程

第1輪

64比特明文

X1

X2

X3

X4

第2輪

W11

W12

W13

W14

第8輪

W71

W72

W73

W74

W21

W22

W23

W24

W81

W82

W83

W84

輸出變換

Y1

Y2

Y3

Y4

密文



Z1

Z6



Z7

Z12



Z43

Z48



Z49

Z52

字密鑰生成器

128比特密鑰

Z1

Z52

16

加密過程(如圖4.15所示)由連續的8輪迭代和一個輸出變換組成,演算法將64比特的明文分組分成4個16比特的子段,每輪迭代以4個16比特的子段作為輸入,輸出也為4個16比特的子段。最後的輸出變換也產生4個16比特的子段,鏈接起來後形成64比特的密文分組。每輪迭代還需使用6個16比特的子密鑰,最後的輸出變換需使用4個16比特的子密鑰,所以子密鑰總數為52。圖4.15的右半部分表示由初始的128比特密鑰產生52個子密鑰的子密鑰產生器。

3. IDEA加密過程

17

圖4.16是IDEA第1輪的結構示意圖,以後各輪也都是這種結構,但所用的子密鑰和輪輸入不同。從結構圖可見,IDEA不是傳統的Feistel密碼結構。每輪開始時有一個變換,該變換的輸入是4個子段和4個子密鑰,變換中的運算是兩個乘法和兩個加法,輸出的4個子段經過異或運算形成了兩個16比特的子段作為MA結構的輸入。MA結構也有兩個輸入的子密鑰,輸出是兩個16比特的子段。

IDEA的輪結構

18

IDEA第1輪的輪結構

19

Y1

Y2

Y3

Y4

1 輪結構

20

最後,變換的4個輸出子段和MA結構的兩個輸出子段經過異或運算產生這一輪的4個輸出子段。注意,由X2產生的輸出子段和由X3產生的輸出子段交換位置後形成W12和W13,目的在於進一步增加混淆效果,使得演算法更易抵抗差分密碼分析。

IDEA加密過程

21

在每一輪中,執行的順序如下:

1. X1和第一個子密鑰相乘。

2. X2和第二個子密鑰相加。

3. X3和第三個子密鑰相加。

4. X4和第四個子密鑰相乘。

5. 將第1步和第3步的結果相異或。

6. 將第2步和第4步的結果相異或。

IDEA每一輪的加密順序

22

7. 將第5步的結果與第五個子密鑰相乘。
8. 將第6步和第7步的結果相加。
9. 將第8步的結果與第六個子密鑰相乘。
10.將第7步和第9步的結果相加。
11.將第1步和第9步的結果相異或。
12.將第3步和第9步的結果相異或。
13.將第2步和第10步的結果相異或。
14.將第4步和第10步的結果相異或。

IDEA每一輪的加密順序

23

演算法的第9步是一個輸出變換,如圖4.17所示。它的結構和每一輪開始的變換結構一樣,不同之處在於輸出變換的第2個和第3個輸入首先交換了位置,目的在於撤銷第8輪輸出中兩個子段的交換。還需注意,第9步僅需4個子密鑰,而前面8輪中每輪需要6個子密鑰。

IDEA每一輪的加密順序

24

IDEA的輸出變換

25

加密過程中52個16比特的子密鑰是由128比特的加密密鑰按如下方式產生的: 前8個子密鑰Z1,Z2,…,Z8直接從加密密鑰中取,即Z1取前16比特(最高有效位),Z2取下面的16比特,依次類推。然後加密密鑰循環左移25位,再取下面8個子密鑰Z9,Z10,…,Z16,取法與Z1,Z2,…,Z8的取法相同。這一過程重復下去,直到52子密鑰都被產生為止。

IDEA子密鑰的產生

26

IDEA子密鑰的產生

產生子密鑰的方法。這個演算法用了52個子密鑰(8輪中的每一輪需要6個,其他4個用於輸出變換)。首先,將128-位密鑰分成8個16-位子密鑰。這些是演算法的第一批8個子密鑰(第一輪6個,第二輪的頭2個)。然後,密鑰向左環移動25位產生另外8個子密鑰,如此進行直到演算法結束。

27

28

29

4. IDEA的解密過程

加密解密實質相同,但使用不同的密鑰;
解密密鑰以如下方法從加密子密鑰中導出:
解密循環I的頭4個子密鑰從加密循環10-I的頭4個子密鑰中導出;解密密鑰第1、4個子密鑰對應於1、4加密子密鑰的乘法逆元;2、3對應2、3的加法逆元;
對前8個循環來說,循環I的最後兩個子密鑰等於加密循環9-I的最後兩個子密鑰;

30

解密與加密過程基本相同,但使用的密鑰不同,解密密鑰按下面的方式生成。

(1)第 i (i=1,2,…,9)輪解密的前4個子密鑰是由加密過程第(10-i)輪的前4個子密鑰得出。其中第1個和第4個解密子 密鑰取為相應的第一個和第四個加密子密鑰模 乘法逆元。第二和第三個子密鑰的取法為:當輪數為i=2,..,8時取為相應的第三個和第二個加密子密鑰的模 加法逆元,當i=1和9時,取為相應的第二個和第三個加密子密鑰的 模 加法逆元。

IDEA的解密過程

31

(2) 第 i(i=1,…,8)輪解密的後兩個子密鑰等於加密過程的第(9-i)輪的後兩個子密鑰。

IDEA的解密過程

32

加密過程

變 換

X1

X2

X3

X4

Z1..Z4

子 加 密

I11

I12

I13

I14

Z5 Z6

變 換

W11

W12

W13

W14

Z7..Z10

子 加 密

I21

I22

I23

I24

Z11 Z612

W21

W22

W23

W24

變 換

W71

W72

W73

W74

Z43..Z46

子 加 密

I81

I82

I83

I84

Z47 Z48

變 換

W81

W82

W83

W84

Z49..Z52

Y1

Y2

Y3

Y4

第1輪

第2輪

第8輪

…………..

33

變 換

X1

X2

X3

X4

U49..U52

子 加 密

V81

V82

V83

V84

U47U48

變 換

J81

J82

J83

J84

U43…U46

子 加 密

V71

V72

V73

V74

U11U12

V21

V22

V23

V24

變 換

J21

J22

J23

J24

U7…U10

子 加 密

V11

V12

V13

V14

U5U6

變 換

J11

J12

J13

J14

U1…U4

Y1

Y2

Y3

Y4

第8輪

第2輪

第1輪

解密

第9輪

…………..

解密過程

34

表3.7是對以上關系的總結。其中Zj的模216+1乘法逆元為Z-1j,滿足(見58頁表3.7)

Zj⊙Z-1j=1mod(216+1)

因216+1是一素數,所以每一個不大於216的非0整數都有一個惟一的模216+1乘法逆元。Zj的模216加法逆元為-Zj,滿足:

-Zj + Zj=0 mod (216)

IDEA的解密過程

35

下面驗證解密過程的確可以得到正確的結果。圖4.18中左邊為加密過程,由上至下,右邊為解密過程,由下至上。將每一輪進一步分為兩步,第1步是變換,其餘部分作為第2步,稱為子加密。

IDEA的解密過程

36

IDEA加密和解密框圖

37

現在從下往上考慮。對加密過程的最後一個輸出變換,以下關系成立:

Y1=W81⊙ Z49 Y2=W83 + Z50

Y3=W82 + Z51 Y4=W84⊙Z52

解密過程中第1輪的第1步產生以下關系:

J11=Y1⊙U1 J12=Y2 + U2

J13=Y3 + U3 J14=Y4⊙U4

IDEA的解密過程

38

將解密子密鑰由加密子密鑰表達並將Y1,Y2,Y3,,Y4代入以下關系,有

J11=Y1⊙Z-149= W81⊙Z49⊙Z-149= W81

J12=Y2 + -Z50=W83 + Z50 + -Z50=W83

J13=Y3 + -Z51=W82 + Z51 + -Z51=W82

J14=Y4⊙Z-152= W84⊙Z52⊙Z-152= W84

IDEA的解密過程

39

可見解密過程第1輪第1步的輸出等於加密過程最後一步輸入中第2個子段和第3個子段交換後的值。從圖4.16,可得以下關系:

W81=I81�MAR(I81�I83,I82�I84)

W82=I83�MAR(I81�I83,I82�I84)

W83=I82�MAL(I81�I83,I82�I84)

W84=I84�MAL(I81�I83,I82�I84)

IDEA的解密過程

40

其中MAR(X,Y)是MA結構輸入為X和Y時的右邊輸出,MAL(X,Y)是左邊輸出。則

V11=J11�MAR(J11�J13,J12�J14)

=W81�MAR(W81�W82,W83�W84)

=I81�MAR(I81�I83,I82�I84) MAR [I81�MAR(I81�I83,I82�I84)�I83�

MAR(I81� I83,I82�I84), I82�

MAL(I81�I83,I82�I84) �I84

�MAL(I81�I83,I82�I84)]

=I81�MAR(I81�I83,I82�I84)

MAR(I81�I83,I82�I84) =I81

IDEA的解密過程

41

類似地,可有 V12=I83 V13=I82 V14=I84

所以解密過程第1輪第2步的輸出等於加密過程倒數第2步輸入中第2個子段和第3個子段交換後的值。

同理可證圖4.18中每步都有上述類似關系,這種關系一直到

V81=I11 V82=I13 V83=I12 V84=I14

即除第2個子段和第3個子段交換位置外,解密過程的輸出變換與加密過程第1輪第1步的變換完全相同。

IDEA的解密過程

42

所以,除第2個子段和第3個子段交換位置外,解密過程的輸出變換與加密過程第1輪第1步的變換完全相同。

所以最後可得知,整個解密過程的輸出等於整個加密過程的輸入。

IDEA的解密過程

43

IDEA分組密碼的特點

可變密鑰長度
混合操作
依賴數據的循環移位
依賴於密鑰的循環移位
依賴S盒子
冗長的密鑰調度演算法
可變的F函數和可變的明文/密文長度
可變的循環次數
在每次循環中都對兩半數據進行操作

44

IDEA可方便地通過軟體和硬體實現。

① 軟體軟體實現採用16比特子段處理,可通過使用容易編程的加法、移位等運算實現演算法的3種運算。

② 硬體由於加、解密相似,差別僅為使用密鑰的方式,因此可用同一器件實現。再者,演算法中規則的模塊結構,可方便VLSI的實現。

IDEA分組密碼的特點

45

THE END!
IDEA

⑵ 理論上最成熟的密碼學演算法

理論上最成熟的密碼學演算法:對稱密碼演算法、公鑰密碼演算法、哈希函數(雜湊函數)。

1、對稱密碼演算法

DES演算法——二十世紀七十年代提出,曾經稱霸對稱加密領域30年。

AES演算法——二十一世紀初提出用以取代DES演算法。

IDEA演算法——二十世紀九十年代初提出,也是一種流行演算法。

RC4演算法——經典的流密碼演算法。

密碼演算法簡介

密碼演算法是用於加密和解密的數學函數,密碼演算法是密碼協議的基礎。現行的密碼演算法主要包括序列密碼、分組密碼、公鑰密碼、散列函數等,用於保證信息的安全,提供鑒別、完整性、抗抵賴等服務。

假設我們想通過網路發送消息P(P通常是明文數據包),使用密碼演算法隱藏P的內容可將P轉化成密文,這個轉化過程就叫做加密。

與明文P相對應的密文C的得到依靠一個附加的參數K,稱為密鑰。密文C的接收方為恢復明文,需要另一個密鑰K-1完成反方向的運算。這個反向的過程稱為解密。

⑶ 涓嬪垪灞炰簬瀵圭О瀵嗛掗鍔犲瘑綆楁硶鏄錛堬級

銆愮瓟妗堛戱細B
甯歌佸圭О瀵嗛掗綆楁硶鏈塖DBI錛堝浗瀹跺瘑鐮佸姙鍏瀹ゆ壒鍑嗗浗鍐呯畻娉曪紝浠呯‖浠朵腑瀛樺湪錛夈両DEA銆丷C4銆丏ES銆3DES

閱讀全文

與idea演算法c相關的資料

熱點內容
安卓手機連不上蘋果熱點是為什麼 瀏覽:433
微信加密密保問題忘記怎麼辦 瀏覽:916
在哪裡能製作手機app 瀏覽:163
python搭建web網站 瀏覽:679
空乘程序員 瀏覽:349
玩加密幣犯法嗎 瀏覽:243
html載入pdf 瀏覽:1002
git源碼如何本地編譯命令 瀏覽:868
單片機研究報告 瀏覽:265
天正建築命令欄 瀏覽:598
加密貨幣應稅事件 瀏覽:459
宋pro的app哪裡下載 瀏覽:207
單片機原理與介面技術第三版課後答案 瀏覽:890
程序員小明教學 瀏覽:613
linuxbin解壓縮 瀏覽:382
四川電信伺服器租用雲空間 瀏覽:31
我的世界伺服器內存大怎麼辦 瀏覽:388
互聯網與伺服器鏈接不成功怎麼辦 瀏覽:645
python拆分數組 瀏覽:83
虛機伺服器怎麼增加D盤的空間 瀏覽:502