①算法簡介
AES(Advanced Encryption Standard)算法即高級加密標準,在密碼學中又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。在微信小程序的數(shù)據(jù)傳輸過程中用到的加密算法。AES算法是用來替代原先的DES,目前已經(jīng)被全世界廣泛使用,同時AES已經(jīng)成為對稱密鑰加密中最流行的算法之一。AES支持三種長度的密鑰:128位,192位,256位。根據(jù)密鑰長度的不同,可以將AES分為AES128,AES192,AES256三種。這里我們主要對AES128進行具體講解
②狀態(tài)矩陣
在AES算法中,以字節(jié)為處理單位,128長度的分組可以分為16個字節(jié)(每個字節(jié)8位),將這16個字節(jié)從左到右從上到下依次排列構成一個4*4的矩陣,這個矩陣稱為狀態(tài)矩陣,如圖2.1(a)是以明文abcdefghijklmnop為例構成的一個明文矩陣,(b)是與之對應的用十六進制數(shù)表示的狀態(tài)矩陣。輸入的明文分組可以構成一個明文初始狀態(tài)矩陣。同樣的密鑰也構成一個狀態(tài)矩陣,并通過密鑰擴展函數(shù)將其擴展為44個字節(jié)組成的序列由W0-W44表示,其中W0-W3是初始密鑰,后面的40個字節(jié)分為10組分別用于輪函數(shù)中的輪密鑰加。
(a)?
?(b)
圖 2.1
③算法流程
AES算法原理流程圖如圖3.1所示,明文首先和原始密鑰進行依次異或運算,然后經(jīng)過輪函數(shù)加密之后形成密文,其中前九次的輪函數(shù)所做的操作都是一樣的(字節(jié)代換、行移位、列混合、輪密鑰加),而第十次的輪函數(shù)和前九次不同(字節(jié)代換、行移位、輪密鑰加)
圖 3.1
③ 流程詳解
(1)字節(jié)代換
簡單的來說就是一個查表的過程,在加密時將狀態(tài)矩陣中的一個輸出字節(jié)的高四位作為行號,低四位作為列號,用S盒中對應行列位置的元素進行替換,如圖3.2所示是一個S盒,圖3.3所示是對上文中明文的狀態(tài)矩陣進行字節(jié)代換之后得到的結果
?圖 3.2
?圖 3.3
(2)行移位
行移位就是將狀態(tài)矩陣的第i行循環(huán)左移i位,如圖3.4所示就是將經(jīng)字節(jié)替換后的狀態(tài)矩陣進行行移位之后的結果,第0行左移0位,第一行左移1位,第二行左移2位,第三行左移3位
?圖 3.4
(3)列混合
將狀態(tài)矩陣進行左乘一個給定矩陣的操作,如圖3.5所示,是將行移位之后的矩陣進行列混合運算之后的結果,在列混合中的乘法和普通的乘法不相同,其規(guī)則如圖3.6所示
?圖 3.5
?圖 3.6
(4)輪密鑰加
輪密鑰加是將狀態(tài)矩陣中的數(shù)據(jù)以列為單位與每一輪的密鑰進行異或運算,例如在第一輪中的輪密鑰加密鑰為W4,W5,W6,W7,明文的狀態(tài)矩陣的第一列與W4進行異或運算,如圖3.7所示是以上文中的明文進行輪密鑰加后的結果
?
?圖 3.7
④密鑰擴展函數(shù)
假設在算法開始時給定的密鑰為abcdefghijklmnop,對其進行擴展就是進行如圖4.1所示的步驟,最終會形成10組子密鑰
圖 4.1
輪常量表如圖4.2所示?
?圖 4.2
以上就是AES算法的加密過程
參考資料:
B站上AES算法的一個比較詳細的講解視頻,大家可以參考文章來源:http://www.zghlxwxcb.cn/news/detail-815628.html
相關文章鏈接文章來源地址http://www.zghlxwxcb.cn/news/detail-815628.html
到了這里,關于信息安全4——AES加密算法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!