唐高陽(yáng) 孫世坤
(1.沈陽(yáng)理工大學(xué)理學(xué)院,遼寧 沈陽(yáng) 110168;2.朝陽(yáng)縣蒙古族中學(xué),遼寧 朝陽(yáng) 122000)
AES(Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))是一個(gè)對(duì)稱(chēng)分組算法,用來(lái)取代DES 算法,從而成為使用廣泛的新標(biāo)準(zhǔn)。選用Rijndael 算法來(lái)作為AES,Rijndael 是比利時(shí)的兩位密碼學(xué)家Daemen和Rijmen 共同設(shè)計(jì)的。Rijndael 算法是具有分組長(zhǎng)度和密鑰長(zhǎng)度均可變的分組算法。密鑰長(zhǎng)度和分組長(zhǎng)度可以獨(dú)立地指定為128 位、192位或是256 位。
Feistel 結(jié)構(gòu)是數(shù)據(jù)分組中的一半被用來(lái)修改數(shù)據(jù)分組中另外一半,然后交換這兩部分,AES 算法不是Feistel 結(jié)構(gòu)的算法。AES 定義了一個(gè)S 盒,它是由16×16個(gè)字節(jié)組成的矩陣,包含了8 位值所能表達(dá)的256 種可能的變換。
AES 中輸入分組是用以字節(jié)為單位的正方形矩陣來(lái)描述的,該分組被復(fù)制到State 數(shù)組,這個(gè)數(shù)組在加密或解密的每個(gè)階段都會(huì)被改變,運(yùn)算完最后的輪密鑰加變換后,State 被復(fù)制到輸出矩陣中。字節(jié)代換是一個(gè)簡(jiǎn)單的查表操作,用State 數(shù)組中的每個(gè)字節(jié)的高4 位作為行值,低4 位作為列值,然后取S 盒中對(duì)應(yīng)行列的元素作為輸出,最后把State 數(shù)組的該字節(jié)用輸出的這個(gè)元素替換。例如,十六進(jìn)制值19,所對(duì)應(yīng)的S 盒的行值是1,列值是9,S 盒中在此位置的值是D4,然后用D4 替換19。
行位移是這樣來(lái)實(shí)現(xiàn)的,State 的第一行保持不變,第二行循環(huán)左移1個(gè)字節(jié),第三行循環(huán)左移2個(gè)字節(jié),第四行循環(huán)左移3個(gè)字節(jié)。
列混淆是對(duì)每列獨(dú)立地進(jìn)行操作。列混淆變換是這樣進(jìn)行的,把經(jīng)行位移變換操作后的State 數(shù)組的一列取出來(lái),然后與一個(gè)4×4 的矩陣進(jìn)行與操作,把得到的結(jié)果覆蓋取出來(lái)的那一列,依次類(lèi)推,處理完4 列以后就完成了列混淆變換。
輪密鑰加變換就是把經(jīng)過(guò)列混淆得到的State 與密鑰進(jìn)行異或運(yùn)算,也就是State 的第1 列與密鑰的第1 列進(jìn)行異或運(yùn)算,運(yùn)算結(jié)果替換State 的第1 列,后面的幾列以此方法類(lèi)推。
圖1
在商業(yè)企業(yè)的計(jì)算機(jī)中往往存在大量的機(jī)密文件,這些機(jī)密文件對(duì)企業(yè)的發(fā)展將會(huì)產(chǎn)生不可估量的作用。如果這些機(jī)密文件保管不善,將會(huì)使企業(yè)遭受巨大的損失。AES 是一個(gè)新的可以用于保護(hù)電子數(shù)據(jù)并被廣泛使用的加密算法。
[1]史子榮.軟件加密技術(shù)從入門(mén)到精通[M].北京:清華大學(xué)出版社,2007:69-74.
[2]張翟.加密解密與網(wǎng)絡(luò)安全技術(shù)[M].北京:冶金工業(yè)出版社,2002.
[3]段鋼.加密與解密[M].北京:冶金工業(yè)出版社,2003.
[4]徐海風(fēng),曹小軍.軟件加密方法及技術(shù)[J].山西冶金,2007,1.
[5]魏光村,孫忠林,徐燕妮.軟件加密技術(shù)研究[J].福建電腦,2009,9.
[6]Ivor Horton.Visual C++2010 入門(mén)經(jīng)典[M].北京:清華大學(xué)出版社,2010.