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