AES加密算法|密码学|网络空间安全
算法簡介
AES的全稱是Advanced Encryption Standard,意思是高級加密標準。
他的出現是為了取代DES加密算法的,DES算法的密鑰長度是56bit,所以算法的理論安全強度是2的56次方,現已不能滿足人類對安全性的需求,所以AES誕生了
AES和DES都是分組密碼,但是組的大小不一樣,DES是64bit一組,AES是128bit一組,密鑰長度DES是56位。但AES的密鑰長度可以是128、192、256,密鑰長度每多64位只會增加兩次輪函數的運用,128長度是10輪,192是12輪,256是14輪。
DES是基于Feistel的機構進行加密,每一輪加密的是64位的一半,也就是32位。
而AES不具有Feistel結構,每次迭代中就加密了所有的128位,所以一般情況下,AES的輪數會比DES少
需要理解的是AES算法是面向字節的加密算法,1字節有8位,也就是8位二進制,AES這里寫成16進制
算法流程圖
結構比DES看起來更簡單明了一些
只有密鑰生成和輪函數兩部分,這里不介紹密鑰生成函數,只介紹輪函數
密鑰加法層
密鑰K先生成K0,和明文按位異或
輪函數
字節代換
如果不考慮S盒的生成過程,那字節代換就是一個查表的過程
對于輸入的128位,分成16個8位的二進制串,每個二進制串分成前后兩個4位2進制,轉換成對應的十六進制,作為查表用的行和列,找到表中對應的數就行
但是S盒是怎么產生的呢?
其實是經過兩部分操作后得到的,首先把一個字節的數換算成10進制,就會得到0-255的一個十進制數,計算一下他在模256下的逆元,由于0沒有逆元,這里規定為0是0的逆元。然后將剛剛的逆元以2進制的方法寫出來,進行以下的仿射變換(本質就是一個矩陣乘法)
得到的就是一個字節對應的值,0到255共256種不同的字節,S盒就是打表提前計算出來所有的數的值,便于直接利用,節約時間
行位移
行位移操作很簡單,就是將輸入的數據豎著寫為一個個規定大小的矩陣,進行位置上的變化
比如 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16記做:
| 2 | 6 | 10 | 14 |
| 3 | 7 | 11 | 15 |
| 4 | 8 | 12 | 16 |
規定的大小要看你的密鑰長度是128還是192還是256,這三個分別對應4 * 4、4 * 6、4 * 8的矩陣
再根據位移表來位移就行,這三個對應的位移表不同,這里就只介紹128的
| 位移大小 | 0 | 1 | 2 | 3 |
上述表經過左移后得到的如下:
| 6 | 10 | 14 | 2 |
| 11 | 15 | 3 | 7 |
| 16 | 4 | 8 | 12 |
列混合
列混淆子層是AES算法中最為復雜的部分,屬于擴散層,列混淆操作是AES算法中主要的擴散元素,它混淆了輸入矩陣的每一列,使輸入的每個字節都會影響到4個輸出字節。行位移子層和列混淆子層的組合使得經過三輪處理以后,矩陣的每個字節都依賴于16個明文字節成可能。其中包含了矩陣乘法、伽羅瓦域內加法和乘法的相關知識。
主要是在擴展域GF(28)的矩陣加法與乘法,這里暫不仔細介紹
密鑰加
就是異或上此輪的密鑰Ki
總結
以上是生活随笔為你收集整理的AES加密算法|密码学|网络空间安全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微计算机与单片机原理及应用答案,电子科技
- 下一篇: 单片机原理及应用