趙雪梅
摘要:AES加密算法具有安全性高,運行速度快,對硬件配置要求低,算法屬于對稱算法等優(yōu)點,非常適合硬件的實現(xiàn)。課題對于AES加密算法進(jìn)行改進(jìn),提高程序運行效率進(jìn)行了研究。研究主要包括AES加密算法的改進(jìn),C語言實現(xiàn),以及完成對數(shù)據(jù)流的加密和解密過程,同時對AES加密算法的應(yīng)用進(jìn)行了簡單介紹。
關(guān)鍵詞:AESC語言加密
前言: AES加密算法作為DES加密算法的替代品,具有安全、高效以及在不同硬件和軟件[6]運行環(huán)境下表現(xiàn)出的始終如一的良好性能,因此該算法具有較高的開發(fā)潛力和良好的實用價值。本研究主要包括AES加密算法的改進(jìn),C語言實現(xiàn),以及完成對數(shù)據(jù)流的加密和解密過程,同時對AES加密算法的應(yīng)用進(jìn)行了簡單介紹。
一、AES加密算法的改進(jìn)及實現(xiàn)
(1)AES加密算法的流程圖
在圖1.1中,Round代表加密的輪數(shù),即程序循環(huán)次數(shù)。State代表狀態(tài)矩陣,一個存儲原始數(shù)據(jù)的數(shù)組。RoundKey代表經(jīng)過擴展運算后的密鑰數(shù)組。ByteSub()代表置換函數(shù),對狀態(tài)矩陣State中的數(shù)據(jù)進(jìn)行置換。ShiftRow()代表移位函數(shù),對狀態(tài)矩陣State中的數(shù)據(jù)進(jìn)行移位運算。MixColumn()代表列混合運算函數(shù),對狀態(tài)矩陣State中的數(shù)據(jù)進(jìn)行列混合運算。AddRoundKey()代表異或運送函數(shù),對數(shù)組State和數(shù)組RoundKey進(jìn)行異或運算。由上圖可以看出,最后一次輪變換比前幾次輪變換少執(zhí)行一次MixColumn()函數(shù)。
(2)AES解密算法的流程圖
在圖1.2中,Round代表加密的輪數(shù),即程序循環(huán)次數(shù)。State代表狀態(tài)矩陣,一個存儲原始數(shù)據(jù)的數(shù)組。RoundKey代表經(jīng)過擴展運算后的密鑰數(shù)組。InvByteSub()代表置換函數(shù),對狀態(tài)矩陣State中的數(shù)據(jù)進(jìn)行置換。InvShiftRow()代表移位函數(shù),對狀態(tài)矩陣State中的數(shù)據(jù)進(jìn)行移位運算。InvMixColumn()代表列混合運算函數(shù),對狀態(tài)矩陣State中的數(shù)據(jù)進(jìn)行列混合運算。由上圖可以看出,最后一次輪變換比前幾次輪變換少執(zhí)行一次MixColumn()函數(shù)。
二、AES加密算法復(fù)雜度分析
下面對改進(jìn)前的算法和改進(jìn)后的算法進(jìn)行復(fù)雜度分析[8]以及程序執(zhí)行效率的分析。
設(shè)b為0x00—0xff中的任意常數(shù),以0x09*b為例進(jìn)行討論。該算式分解如下: