AES加密算法詳解


AES 是一個對稱密碼分組算法,分組長度為128bit,密鑰長度為128、192 和 256 bit。

整個加密過程如下圖所示。

1.密鑰生成算法

 密鑰擴展過程:

    1)  將種子密鑰按下圖所示的格式排列,然后每32bit分別記為w[0]、w[1]、w[2]、w[3];

    2)依次取問w[5],w[6].......w[43],記為w[j]

     若j%4=0,則w[j]=w[j-4]⊕g(w[j-1]),否則w[j]=w[j-4]⊕w[j-1];

  函數g的流程說明:

    a)  將w循環左移8比特;

    b)  分別對每個字節做S盒置換;

    c)  與32比特的常量(RC[j/4],0,0,0)進行異或,RC是一個一維數組,RC = {0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B}

2.字節替代(SubBytes)

將狀態矩陣中的元素通過S盒映射為一個新的字節:把該字節的高4位作為行值,低4位作為列值,取出S盒對應的元素作為輸出。

下圖(a)為S盒,圖(b)為S-1(S盒的逆)

S盒內部計算方法:

y=Ax-1+b

其中x*x-1=1mod(x8+x4+x3+x2+1),則x為輸入元素,y為S盒輸出元素。

3.行移位(ShiftRows)

將狀態矩陣的第0行左移0字節,第1行左移1字節,第2行左移2字節,第3行左移3字節

 

4.列混合(MixColumns)

 

將每列的元素乘以一個行列式進行替換。

5.輪密鑰加(AddRoundKey)

 

輪密鑰加是將128位輪密鑰Ki同狀態矩陣中的數據進行逐位異或操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM