AES加密算法的要求及密鑰生成
隨著密碼分析技術(shù)的不斷發(fā)展,des對稱密碼算法變得不那么安全,于是美國國家標準與技術(shù)局發(fā)出了關(guān)于開發(fā)新的加密標準():
1、應(yīng)是對稱加密算法,具有可變長度的密鑰(128、192或256位),一個128位的塊:
2、應(yīng)比三重DES更安全;
3、應(yīng)可應(yīng)用于公共領(lǐng)域并免費提供;
4、應(yīng)至少在30年是安全的。
經(jīng)過最后的測試NITS宣布了最終的獲勝者,這就是AES,AES是一種靈活的算法,其塊的大小可變,密鑰大小可變,迭代次數(shù)也可變,而且迭代次數(shù)與塊和密鑰大小有關(guān)。正因為其靈活,AES實際上有三個版本:AES-128、AES-129和AES-256。常見的AES結(jié)構(gòu)圖如下:
AES首先將明文按字節(jié)分成列。前4個字節(jié)組成一列,接下來的4個字節(jié)組成第二列,以此類推如果塊為128位,那么就可以組成一個4X4的矩陣。
密鑰生成
密鑰是按矩陣的列進行分組的,然后添加40個新列來進行擴充。如果前4列(即由密鑰給定的那些列)位W()、W()、W()和W(),那么新列以遞歸方式產(chǎn)生。如果i是4的倍數(shù),那么第i列由等式W(i)=W(i-4)XORT(i-1)確定。
如果不是4的倍數(shù),那么第i列由等式
其中T[W(i-1)]是W(i-1)的一種轉(zhuǎn)換形式,按一下方式實現(xiàn):
1、循環(huán)的將W(i-1)的元素位移,每次一個字節(jié),也就是說,abcd變成dcba;
2、將這4個字節(jié)作為S盒的輸入,輸出新的4個字節(jié)efgh:
3、計算這一輪的常量
4、這樣生成轉(zhuǎn)后后的列
其過程如下圖:
由于AES非常小,運行速度快,密鑰大小128位,安全可靠,因此它不僅用于安全要求比三重DES更高的應(yīng)用中,而且可用于計算資源有限的應(yīng)用中。












