IDEA資料加密演算法介紹

2021-04-08 23:47:55 字數 3994 閱讀 5040

idea

資料加密演算法及實現

idea

對稱資料加密演算法,是我

2000

年剛畢業,工作需要進行資料加密時,學習、實現的第乙個標準資料加密演算法,並且此後就深深地迷上了資料加密這個方面,以後連續兩年潛心學習和研究這方面的知識與技術。在此過程中,非常感謝同事李哥對我的大力幫助,並從此成了很好的朋友。 1、

簡介idea

是international data encryption algorithm

的縮寫,

是1990

年由瑞士聯邦技術學院來學嘉

x.j.lai

和massey

提出的建議標準演算法稱作

pes( proposed encryption standard)

。lai

和massey

在1992

年進行了改進強化了抗差分分析的能力改稱為

idea

它也是對

64bit

大小的資料塊加密的分組加密演算法金鑰長度為

128位它基於「相異代數群上的混合運算」設計思想演算法用硬體和軟體實現都很容易且比

des在實現上快的多。

idea

自問世以來,已經經歷了大量的詳細審查,對密碼分析具有很強的抵抗能力,在多種商業產品中被使用。

這種演算法是在

des演算法的基礎上發展出來的,類似於三重

des。發展

idea

也是因為感到

des具有金鑰太短等缺點,已經過時。

idea

的金鑰為

128位,這麼長的金鑰在今後若干年內應該是安全的。

類似於

des,

idea

演算法也是一種資料塊加密演算法,它設計了一系列加密輪次,每輪加密都使用從完整的加密金鑰中生成的乙個子金鑰。與

des的不同處在於,它採用軟體實現和採用硬體實現同樣快速。 由於

idea

是在美國之外提出並發展起來的,避開了美國法律上對加密技術的諸多限制,因此,有關

idea

演算法和實現技術的書籍都可以自由出版和交流,可極大地促進

idea

的發展和完善。 2、

演算法詳解:

2.1產生金鑰

演算法用了

52個子金鑰

(8輪中的每一輪需要

6個,其他

4個用與輸出變換

)。首先,將

128-

位金鑰分成8個

16-位子金鑰。這些是演算法的第一批

8個子金鑰(第一輪六個,第二輪的頭兩個)。然後,金鑰向左環移

x位後再分成

8個子金鑰。開始

4個用在第二輪,後面

4個用在第三輪。金鑰再次向左環移

25位產生另外

8個子金鑰,如此進行直到演算法結束。具體是:

idea

總共進行

8輪迭代操作,每輪需要

6個子金鑰

,另外還需要

4個額外子金鑰

,所以總共需要

52個子金鑰,這個

52個子金鑰都是從

128位金鑰中擴充套件出來的。

首先把輸入的

key分成8個

16位的子金鑰,

1~6號子金鑰供第一輪加密使用,

7~8號子金鑰供第二輪使用

,然後把這個

128位金鑰迴圈左移

25位,這樣

key = k26k27k28

…k24k25。

把新生成的

key在分成8個

16位的子金鑰,

1~4號子金鑰供第二輪加密使用

(前面已經提供了兩個

)5~8

號子金鑰供第三輪加密使用。到此我們已經得到了

16個子金鑰,如此繼續

,當迴圈左移了

5次之後已經生成了

48個子金鑰

,還有四個額外的子金鑰需要生成,再次把

key迴圈左移25位

,選取劃分出來的8個

16位子金鑰的前

4個作為那

4個額外的加密金鑰

.供加密使用的

52個子金鑰生成完畢。

輸入的

64-位資料分組被分成4個

16-位子分組:xl,

x2,x3和

x4。這

4個子分組成為演算法的第一輪的輸入,總共有

8輪。在每一輪中,這

4個子分組相互相異或,相加,相乘,且與6個

16-位子金鑰相異或,相加,相乘。在輪與輪間,第二和第三個子分組交換。最後在輸出變換中

4個子分組與

4個子金鑰進行運算。

2.2

加、解密過程

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

(1)x1

和第乙個子金鑰相乘。

(2)x2

和第二個子金鑰相加。

(3)x3

和第三個子金鑰相加。

(4)x4

和第四個子金鑰相乘。

(5)

將第(1)

步和第(3)

步的結果相異或。·

(6)將第

(2)步和第

(4)步的結果相異或。

(7)

將第(5)

步的結果與第五個子金鑰相乘。

(8)

將第(6)

步和第(7)

步的結果相加。

(9)

將第(8)

步的結果與第六個子金鑰相乘。

(10)

將第(7)

步和第(9)

步的結果相加。

(11)

將第(1)

步和第(9)

步的結果相異或。

(12)

將第(3)

步和第(9)

步的結果相異或。

(13)

將第(2)

步和第(10)

步的結果相異或。

(14)

將第(4)

步和第(10)

步的結果相異或。

每一輪的輸出是第

(11)

、(12)

、(13)

和(14)

步的結果形成的

4個子分組。將中間兩個分組分組交換

(最後一輪除外

)後,即為下一輪的輸入。 經過

8輪運算之後,有乙個最終的輸出變換:

(1) x1

和第乙個子金鑰相乘。

(2) x2

和第二個子金鑰相加。

(3) x3

和第三個子金鑰相加。

(4) x4

和第四個子金鑰相乘。

最後,這

4個子分組重新連線到一起產生密文。

2.3

金鑰對應圖

2.4

加密過程圖

2.5

解密過程圖 3、

評價:idea

演算法的金鑰長度為

128位。設計者盡最大努力使該演算法不受差分密碼分析的影響,數學家已證明

idea

演算法在其

8圈迭代的第

4圈之後便不受差分密碼分析的影響了。假定窮舉法攻擊有效的話,那麼即使設計一種每秒種可以試驗

10億個金鑰的專用晶元,並將

10億片這樣的晶元用於此項工作,仍需

1013

年才能解決問題;另一方面,若用

1024

片這樣的晶元,有可能在一天內找到金鑰,不過人們還無法找到足夠的矽原子來製造這樣一台機器。目前,尚無一片公開發表的試圖對

idea

進行密碼分析的文章。因此,就現在來看應當說

idea

是非常安全的。

並且,

idea

資料比較

rsa演算法加、解決速度快得多,又比

des演算法要相對安全得多。 4、

參考文獻:

《應用密碼學

(協議演算法與

c源程式

)》:機械工業出版社 5、

原始碼:

國際資料加密演算法(IDEA)簡介

1.背景與歷史 國際資料加密演算法 international data encryption algorithm,idea 是最強大的加密演算法之一。儘管idea很強大,但不想des那麼普及,原因有兩個 第一,idea受專利的保護,而des不受專利的保護,idea要先獲得許可證之後才能在商業應用程...

資料加密演算法

資料加密演算法 加密將防止資料被檢視或修改,並在原本不安全的通道上提供安全的通訊通道,它達到以下目的 保密性 防止使用者的標識或資料被讀取。資料完整性 防止資料被更改。身份驗證 確保資料發自特定的一方。一 資料加密 編碼演算法列表 常見用於保證安全的加密或編碼演算法如下 1 常用金鑰演算法 金鑰演算...

資料加密演算法

1 常用金鑰演算法 金鑰演算法用來對敏感資料 摘要 簽名等資訊進行加密,常用的金鑰演算法包括 2 單向雜湊演算法 單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有 3 其它資料演算法 其它資料演算法包括一些常用編碼演算法及其與明文 ascii unicode 等 轉換等,如base 64 qu...