密码学系列之:IDEA
文章目錄
- 簡(jiǎn)介
- IDEA簡(jiǎn)介
- IDEA原理
- IDEA子密鑰的生成
簡(jiǎn)介
IDEA的全稱(chēng)是International Data Encryption Algorithm,也叫做國(guó)際加密算法,注意,這里不是我們常用的那個(gè)開(kāi)發(fā)工具IDEA。
今天給大家詳細(xì)介紹一下IDEA。
IDEA簡(jiǎn)介
IDEA中文叫做國(guó)際加密算法,最開(kāi)始也被叫做Improved Proposed Encryption Standard (IPES)。它是一種對(duì)稱(chēng)密鑰加密算法,最初是由James Massey 和 Xuejia Lai 在1991年提出的。
其目標(biāo)是替代DES算法。IDEA是對(duì)早期的 PES 的一次修訂。IDEA是OpenPGP標(biāo)準(zhǔn)的可選算法。
IDEA的專(zhuān)利在2012年已經(jīng)過(guò)期了,現(xiàn)在是可以免費(fèi)使用的。
IDEA原理
IDEA加密塊長(zhǎng)度是64bits,密鑰長(zhǎng)度是128bits,是由八輪變換和半輪輸出轉(zhuǎn)換組合而成的。加密和解密的過(guò)程是類(lèi)似的。我們看下IDEA的基本流程圖:
上面圖中, 藍(lán)色圓圈是XOR異或操作,綠色框是加法模數(shù)216。紅色的點(diǎn)是乘模216 + 1,如果輸入都是0(0x0000)那么將會(huì)被轉(zhuǎn)換為216,如果輸入是216,那么會(huì)被轉(zhuǎn)換為0(0x0000)。
八輪操作之后,就是下面的半輪輸出轉(zhuǎn)換了,輸出轉(zhuǎn)換如下所示(中間兩個(gè)值的交換抵消了最后一輪結(jié)束時(shí)的交換,因此沒(méi)有凈交換):
IDEA子密鑰的生成
IDEA使用的是 Lai–Massey結(jié)構(gòu)。 每輪使用6個(gè)16位子密鑰,最后的半輪使用4個(gè)子密鑰,共8.5回合52個(gè)子密鑰。
前面8個(gè)子密鑰直接從密鑰中提取,因?yàn)槊荑€的長(zhǎng)度是128bits,剛好可以分成8個(gè)16bits的自密鑰。其中第一輪的K1為密鑰的16位。
通過(guò)在每8組之間將主密鑰向左移動(dòng)25位,從而創(chuàng)建更多的8組子密鑰。
本文已收錄于 http://www.flydean.com/idea/
最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)!
歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!
總結(jié)
以上是生活随笔為你收集整理的密码学系列之:IDEA的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: NumPy之:理解广播
- 下一篇: NumPy之:ndarray中的函数