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