AES加密--備忘概述

明文加密,經過十輪

首先,明文輸入是按列變成矩陣形式的。
之後前九輪的變化所需步驟一樣
在第九輪之前有第0輪,第0輪就是把明文和初始密鑰進行異或運算
前九輪變化所需步驟有四步
一、
1.sbox變化
看sbox表格,先找行,後找列,數據矩陣有16個字節,每個字節由兩個16進製表示,第一個16進制數字表示sbox的行下標,第二個16進制數表示sbox的列下標,由這兩個小標即可找到對應的替代的sbox盒中的兩個16進制數字
2行位移
經過第一步變化後,我們得到的依然是一個4*4的矩陣。
矩陣第一行不做變換
第二行左移一個字節
第三行左移兩個字節
第四節左移三個字節
在這個4*4的矩陣裏,一個字節其實就相當於矩陣裏的一個元素,左移一個字節就是第二行的第一個元放到第二行的第四個元素的位置,第二個,第三個,第四個元素一次往前“頂”
3列混淆
經過第二步的變換我們依然得到一個4*4的矩陣。
我們用一個固定的4 * 4的矩陣與我們加密過程中的矩陣的每一列相乘,4* 4的矩陣乘4* 1的矩陣我們能得到一個新的4 * 1的矩陣,就這樣我們能得到四列新數據,合起來後又是一個4*4的新矩陣。
4輪密鑰加
輪密鑰也是一個4*4的矩陣每一輪變換在這一步都對應一個新的輪密鑰
我們把上一步得到的矩陣的每一列和輪密鑰的每一列進行異或XOR運算(就是兩列數據的每一行數據進行抑或運算得到新的行數據),就這樣我們又得到一個4*4的矩陣
這個矩陣就是前九輪變化中每輪變化結束後我們得到的最終矩陣
二、
第十輪變換有三步
sbox變化 行位移 輪密鑰加
其實就是把前九輪變化中的列混淆步驟去掉了,這樣我們就得到了最終的數據矩陣,也就是密文。

下面我們來看一下輪密鑰的形成
輪密鑰也是一個4*4的矩陣,我們首先會有一個初始4 4矩陣作爲初始密鑰,但這個初始密鑰不是用於第一輪加密用的輪密鑰,我們要從這個初始密鑰再拓展出10個 4 *4的矩陣作爲每輪密鑰加的輪密鑰。如果我們把11個4 *4的矩陣看成一個 4 44的矩陣,然後把每一列看成一個整體,把每一列看成一個密鑰,如果每一個列密鑰看成數組中的元素,下標從0開始,我們就要把原來只有4個元素的下標(初始密鑰)拓展到下標爲43的密鑰。
密鑰拓展算法
關於列密鑰的拓展算法有兩種情況一個是此時拓展的列密鑰下標是4的倍數,另一種情況是拓展的列密鑰下標不是4的倍數。
如果拓展的列密鑰的下標是4的倍數:
設此時要拓展的列密鑰的下標爲x,則我們先取下標爲x-1的列密鑰,向下位移一字節,這裏的位移和上面講到的行位移是一個意思,不過這裏可以稱之爲列位移,然後我們將新的列數據進行sbox替換得到新的列數據,之後我們取下標爲x-4的列密鑰與新的列數據進行異或運算,然後再與輪常數進行異或運算,得到的新的列數據就是下標爲x的列密鑰。
如果拓展的列密鑰的下標不是4的倍數:
只把下標爲x-4的列密鑰與下標爲x-1的列密鑰進行異或ROX運算的結果作爲新的列密鑰。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章