AES算法流程以及4種工作模式流程圖_第1頁
AES算法流程以及4種工作模式流程圖_第2頁
AES算法流程以及4種工作模式流程圖_第3頁
AES算法流程以及4種工作模式流程圖_第4頁
AES算法流程以及4種工作模式流程圖_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1、 AES加密算法基本流程AES算法的數(shù)據分組長度為128比特、密鑰長度為128/192/256比特。AES加解密包括Nr輪,前面Nr-1輪包含S盒變換、行移位、列混淆、輪密鑰加4個階段,最后一輪則少了列混淆這個階段。Rijnadel(State, CipherKey)/初始化KeyExpansion( CipherKey, ExpandedKey );/生成子密鑰AddRoundKey( State, ExpandedKey );/與子密鑰位與/ 前Nr-1輪for(i =1; i < Nr; i+) ByteSub(State);/ S-盒ShiftRow(State);/ 行被移

2、位MixColumn(State);/ 列被混疊AddRoundKey (State, ExpandedKey ); /與子密鑰位與/最后一輪ByteSub(State);ShiftRow(State);AddRoundKey (State, ExpandedKey );2、AES加密算法2.1、狀態(tài)、密鑰、輪數(shù)狀態(tài): 解密過程中的中間數(shù)據。以字節(jié)為元素的矩陣,或二維數(shù)組。所有的操作都在狀態(tài)上進行。狀態(tài)可以用以字節(jié)為元素的矩陣陣列表示,如上圖所示該陣列有 4 行,列數(shù)記為Nb,Nb等于分組長度除以4。符號說明:Nb 明密文所含的數(shù)據字數(shù)。Nk 密鑰所含的數(shù)據字數(shù)。Nr 迭代輪數(shù)。2.1、S盒變

3、換S盒變換其實是一個查表的過程,分別取一個字節(jié)的高4位和低4位作為行值和列值(因此是),然后在S盒中找到對應的字節(jié)替換之。該變換是一個非線性變換。這個非線性就體現(xiàn)在S盒的構造上。S 盒變換是 AES 的唯一非線性變換,是 AES 安全的關鍵。關于S盒是按如下方式構造:1)初始化S盒,按行升序排列的字節(jié)初始化。行x列y的字節(jié)是xy,行號和列號從0開始計數(shù)。2)求出每一個元素在GF(28)中的逆。00被映射為它自身。3)仿射變換。對上一步中的每一個字節(jié)的每一位作如下變換yi=xi + x(i+4)mod8 + x(i+5)mod8 + x(i+6)

4、mod8 + x(i+7)mod8 + ci,Ci是字節(jié)0x63的第i位。該變換用矩陣表示如下所示:2.2、行移位變換在行移位變換中,狀態(tài)的第一行沒有任何變化,第二行循環(huán)移位 C1 字節(jié),第三行循環(huán)移位 C2 字節(jié),第四行循環(huán)移位 C3 字節(jié)。位移量 C1、C2 和 C3 與分組長度 Nb 有關,如下表:行移位舉例如下所示:2.3、列混合變換列混淆即是用一個常矩陣乘以第二步變換后的矩陣,以達到矩陣中每一個元素都是該元素原所在列所有元素的加權和。2.4、輪密鑰加變換狀態(tài)與輪密鑰(16 byte)異或相加。輪密鑰由種子密鑰通過密鑰調度算法產生得到,輪密鑰長度等于分組長度 Nb&

5、#160;。3、密鑰調度算法 輪密鑰是通過密鑰調度算法從密鑰中產生的,這其中包括兩個部分:密鑰擴展和輪密鑰選取?;驹砣缦拢?1、所有輪密鑰比特的總數(shù)等于輪數(shù)加1乘以分組長度(如 128 比特的分組長度和10輪迭代,共需要1408比特的密鑰); 2、將密鑰擴展成一個擴展密鑰; 3、輪密鑰按下述方式從擴展密鑰中選?。旱谝粋€輪密鑰由一開始的Nb個字組成,第二個輪密鑰由接下來的Nb個字組成,如此繼續(xù)下去。3.1密鑰擴展擴展密鑰用數(shù)組 WNb*(Nr+l)表示,前 Nk 個字是種子密鑰,其它的密鑰字通過遞歸定義生成。由于密鑰擴展函數(shù)取決于 Nk 的值,我們分了 Nk6 和 Nk6 兩種情況。對于密鑰

6、擴展,用類 C 語言描述如下:KeyExpansion(byte key4*Nk, word wNb*(Nr+1), Nk) begin word temp i = 0 while (i < Nk) wi = word(key4*i, key4*i+1, key4*i+2, key4*i+3) i = i+1 end whilei = Nk while (i < Nb * (Nr+1) temp = wi-1 if (i mod Nk = 0) temp = SubWord(RotWord(temp) xor Rconi/Nk else if (Nk > 6 and i mo

7、d Nk = 4) temp = SubWord(temp) end if wi = wi-Nk xor temp i = i + 1 end while end擴展算法如下:最前面的 Nk 個字是由種子密鑰填充的。之后的每一個字 Wj 等于前面的字 Wj-1 的與 Nk 個位置之前的字 Wj-Nk的異或。而且對于 Nk 的整數(shù)倍的位置處的字,在異或之前,對 Wj-1 的進行如下變換:1、字節(jié)的循環(huán)移位 RotByte, 即當輸入字為 (a,b,c,d) 時,輸出字為 (b , c, d, a )2、用 S 盒進行變換字中的每個字節(jié)3、異或輪常數(shù) Rconi/Nk輪常量是一個字,這個字最右邊三

8、個字節(jié)總是0。每輪的輪常量均不同,其定義為Rconj = (RCj,0,0,0), 其中RC1 = 1, RCj = 2*RCj-1,且乘法定義在域GF(28)上。j12345678910RCj(HEX)01020408102040801B363.2 輪密鑰的選擇在進行密鑰加時,密鑰長必須與分組長相等,所以第 i 輪的密鑰與分組長度有關,并且由擴展密鑰的字 wNb*i, wNb*i+1, , wNb*(i+1)構成。如下圖所示給出了 Nb=4,Nk=4 時的輪密鑰選擇情況。4、AES四種模式:ECB、CBC、CFB、OFB4.1 ECBECB是最簡單的塊密碼加密模式,加密前根據加密塊大?。ㄈ鏏

9、ES為128位)分成若干塊,之后將每塊使用相同的密鑰單獨加密,解密同理。ECB模式由于每塊數(shù)據的加密是獨立的因此加密和解密都可以并行計算,ECB模式最大的缺點是相同的明文塊會被加密成相同的密文塊,這種方法在某些環(huán)境下不能提供嚴格的數(shù)據保密性。4.2 CBCCBC模式對于每個待加密的密碼塊在加密前會先與前一個密碼塊的密文異或然后再用加密器加密。第一個明文塊與一個叫初始化向量的數(shù)據塊異或。CBC模式相比ECB有更高的保密性,但由于對每個數(shù)據塊的加密依賴與前一個數(shù)據塊的加密所以加密無法并行。與ECB一樣在加密前需要對數(shù)據進行填充,不是很適合對流數(shù)據進行加密。Openssl中的AES_cbc_encrypt允許length不是16(128位)的整數(shù)倍,不足的部分會用0填充,輸出總是16的整數(shù)倍。完成加密或解密后會更新初始化向量IV。4.3 CFB與ECB和CBC模式只能夠加密塊數(shù)據不同,CFB能夠將塊密文(Block Cipher)轉換為流密文(Stream Cipher)。CFB的加密工作分為兩部分:1、 將一前段加密得到的密文再加密2、 將第1步加密得到的數(shù)據與當前段的明文異或。由于加密流程和解密流程中被塊加密器加密的數(shù)據是前一段密文,因此即使明文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論