今天本來不想起床的,奈何陽光照射到小生的床上,讓我想起又是美好的一天,果斷出門,但是剛洗漱好弄了個發型,半隻腳踏出門外才想起我沒有女朋友出去幹啥,然後果斷的給朋友們來了一波圖文教學AES加密算法。
AES簡介全稱:AES(Advanced Encryption Standard)高級加密标準
是一種最常見的對稱加密算法,微信小程序加密傳輸就是用的這個加密算法的
AES具體的加密流程介紹
如上圖:明文p是指沒有經過加密的數據,密鑰k是用來加密明文的密碼,在對稱加密算法中,加密與解密的密鑰是相同的。密鑰為接收方和發送方協商産生的,但不可以在網絡上傳輸,否則将導緻密鑰的洩露。我們一般是通過非對稱加密算法加密密鑰,然後在通過網絡傳輸給對方,或者直接面對面的商量密鑰,最重要的一個點我們一定要記住,密鑰是不能洩露的,否則會被攻擊者還原密文,竊取最重要的機密數據。
AES加密函數,上圖那個表示經過加密函數處理後的數據,與之對應的是AES解密函數。
設AES解密函數為D,則P=K,C,其中C為明文,K為密鑰,P為明文,也就是說,把密文C和密鑰K作為解密函數的參數輸入,則解密函數會輸出明文P。
對稱加密算法與非對稱加密算法的區别
1) 對稱加密算法
特點:加密和解密用到的密鑰是相同的
注:這種加密方式速度非常快,适合經常發送數據的場合
缺點:密鑰的傳輸比較麻煩。
2) 非對稱加密算法
特點:加密和解密用的密鑰是不同的
注:這種加密方式是用數學上難解問題構成,通常加密解密的速度比較慢,适合偶爾發送數據的場合。
優點:密鑰傳輸方便,常見的非對稱加密算法為RSA,ECC和EIGamal
AES的基本結構
我們來看一下AES的基本結構,AES為分組密碼,分組密碼也就是把明文分成一組一組的,每組的長度相等,每次加密一組數據,直到加密完整個明文。
在AES标準規範中,分組長度隻能是128位,也就是說,每個分組為16個字節,每個字節8位,密鑰的長度可以使用128位、192位或者258位。
AES128的實現原理
1) AES-128,也就是密鑰的長度為128位,加密輪數為10輪
AES的加密公式為C=E(K,P),在加密函數E中,會執行一個輪函數,并且執行10次中國輪函數,這個輪函數的前9次執行操作是一樣的,隻有第10次有所不同,也就是說,一個明文分組會被加密10輪,AES的核心就是實現一輪的所有操作,AES的處理單位是字節,128位的輸入明文分組P和輸入密鑰K都被分成16個字節,分别記為P=P0 P1到P15和K=K0 K1=K15。
比如:
明文分組為P=abcde一直到p,其中a的字符對應P0 p對應P15,一般明文分組用字節位單位的正方形,矩陣描述,稱為狀态矩陣,在算法的每一輪中狀态矩陣的内容不斷發生變化,最後的結果作為密文的輸出,該矩陣中字節的排列順序從上到下,從左到右依次排列。
2) AES中一輪的4個操作
字節代換、行位移、列混合、輪密鑰加
1. 字節代換:AES的字符代換其實就是一個簡單的查表操作,AES定義了一個S盒和一個逆S盒。
2. 行位移:就是一個簡單的左循環移位操作。
3. 列混合:是通過矩陣相乘來實現的,經過移位後的狀态矩陣與固定的矩陣相乘,得到混淆後的狀态矩陣。
4. 輪密鑰加:是将128位輪密鑰Ki同狀态矩陣中的數據進行逐位異或操作。
小結:今天的理論知識比較多,不知道你們有沒有學會呢?不過沒學會沒關系,同學們可以通過私聊小生,小生在給大家細細道來。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!