AES算法

AES的由來

前面一篇文章咱們講到了DES算法。鑑於DES能夠被破解和加密效率不高的缺陷。美國的NIST(National Institute of Standards and Technology,國家標準技術研究所)在2000年經過選拔,從多個候選算法中確認了Rijndael算法爲最新的AES算法,成爲聯邦信息處理標準(FIPS)。算法

什麼是Rijndael

Rijndael是由比利時密碼學家Joan Daemen和Vincent Rijmen設計的分組密碼算法。它在2000年被當選爲AES算法。加密

注意,雖然AES是一種密碼強度很高的對稱密碼算法,可是若是須要商用的話要向NIST支付受權費用。

Rijndael的原理

跟DES同樣,Rijndael也是由多輪運算組成的。其中每一輪都包括:SubBytes,ShiftRows,MixColumns和AddRoundKey這四個步驟。spa

下面咱們分別來說一下各個步驟的做用。設計

SubBytesblog

在AES的規範中,Rijindael的分組長度固定爲128bits,密鑰長度有128,192和256bits三種。教程

128bits就是16字節。一個字節能夠表示0-255的任意值。而SubBytes就是根據其值在一個擁有256個值的替換表中查找出對應的值進行處理。rem

爲了便於理解,你們能夠將其當作是簡單的替換。get

ShiftRows博客

SubBytes 以後,咱們就能夠進行shiftRows的操做了。it

因爲咱們的源字節是16bytes,能夠將其當作4*4 的一個矩陣。

ShiftRows就是將一行4字節按照必定的規則向左平移,如今有4行,每一行的平移字節數是不一樣的。

MixColumns

ShiftRows以後就是MixColumns,MixColumns是在4字節的列上面進行必定的運算,將其變爲另外的4字節列。

AddRoundKey

最後將生產的字節和密鑰進行XOR運算,最後生產結果。一般須要重複進行10-14輪運算。

Rijndael的特色

  1. 輸入的全部bits都會在一輪裏面被加密。同DES相比,AES的加密效率更加高效。
  2. Rijndael 加密過程爲:SubBytes->shiftRows->MixColumns->AddRoundKey , 解密的時候須要按照相反的流程來進行:AddRoundKey->MixColumns->shiftRows->SubBytes。 注意,除了AddRoundKey是XOR運算不須要逆運算以外,其餘的步驟都須要進行逆運算。

更多教程請參考 flydean的博客

相關文章
相關標籤/搜索