簡述Rijndael加密算法

Rijndael加密算法是1997年AES高級加密標(biāo)準(zhǔn)全球海選的獲勝者,可以將它認(rèn)為是AES高級加密標(biāo)準(zhǔn)的前身,但它和AES還是存在一定區(qū)別的,今天我們就來簡單了解一下。

Rijndael加密算法簡介

Rijndael加密算法由比利時(shí)計(jì)算機(jī)科學(xué)家Vincent Rijmen和Joan Daemen所開發(fā)的,最終因其各項(xiàng)數(shù)據(jù)的優(yōu)異表現(xiàn),成功當(dāng)選AES高級加密標(biāo)準(zhǔn)。

Rijndael加密算法

Rijndael和AES的區(qū)別

Rijndael的分組長度和密鑰長度可以分別以32比特為單位,在128比特和256比特的范圍內(nèi)進(jìn)行選擇。

而在AES的規(guī)格中,分組長度固定為128比特,密鑰長度只有128、192和256比特三種。

Rijndael算法的加密流程

Rijndael算法也是由多輪構(gòu)成的,其中每一輪分為SubBytes、ShiftRows、MixColumns和AddRoundKey4個步驟。它使用的是SPN結(jié)構(gòu)。

1.SubBytes

Rijndael的輸入分組為128比特,也就是16個字節(jié)。首先,需要逐個字節(jié)對16字節(jié)的輸入數(shù)據(jù)進(jìn)行SubBytes處理。所謂SubBytes處理,就是以每個字節(jié)的值(0-255的任意值)為索引,從一張擁有256個值的替換表中查找出對應(yīng)值的處理。也就是說,將一個字節(jié)的值替換成另外一個字節(jié)的值。

2.ShiftRows

以4個字節(jié)為單位的行(row)按照一定的規(guī)則向左平移,且每一行平移的字節(jié)數(shù)是不同的。

Rijndael加密算法

3.MixColumns

對一個4字節(jié)的值進(jìn)行矩陣運(yùn)算,將其變?yōu)榱硗庖粋€4字節(jié)值。

4.AddRoundKey

對MixColumns的輸出與輪密鑰進(jìn)行XOR,即進(jìn)行AddRoundKey處理,在Rijndael中需要重復(fù)10到14輪計(jì)算。

Rijndael算法的解密流程

由于Rijndael為對稱加密算法,所有它的解密過程與加密的逆過程一致,為:AddRoundKey - InvMixColumns - InvShiftRows - InvSubBytes.

Rijndael加密算法

從加密算法的安全角度來說,Rijndael(AES)并不是最安全的算法,但是它在整體的安全、性能、效率等方面表現(xiàn)的十分不錯,所以它才能成為全世界使用最為廣泛的對稱加密算法。