唐高阳 孙世坤
(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个字节组成的矩阵,包含了8 位值所能表达的256 种可能的变换。
AES 中输入分组是用以字节为单位的正方形矩阵来描述的,该分组被复制到State 数组,这个数组在加密或解密的每个阶段都会被改变,运算完最后的轮密钥加变换后,State 被复制到输出矩阵中。字节代换是一个简单的查表操作,用State 数组中的每个字节的高4 位作为行值,低4 位作为列值,然后取S 盒中对应行列的元素作为输出,最后把State 数组的该字节用输出的这个元素替换。例如,十六进制值19,所对应的S 盒的行值是1,列值是9,S 盒中在此位置的值是D4,然后用D4 替换19。
行位移是这样来实现的,State 的第一行保持不变,第二行循环左移1个字节,第三行循环左移2个字节,第四行循环左移3个字节。
列混淆是对每列独立地进行操作。列混淆变换是这样进行的,把经行位移变换操作后的State 数组的一列取出来,然后与一个4×4 的矩阵进行与操作,把得到的结果覆盖取出来的那一列,依次类推,处理完4 列以后就完成了列混淆变换。
轮密钥加变换就是把经过列混淆得到的State 与密钥进行异或运算,也就是State 的第1 列与密钥的第1 列进行异或运算,运算结果替换State 的第1 列,后面的几列以此方法类推。
图1
在商业企业的计算机中往往存在大量的机密文件,这些机密文件对企业的发展将会产生不可估量的作用。如果这些机密文件保管不善,将会使企业遭受巨大的损失。AES 是一个新的可以用于保护电子数据并被广泛使用的加密算法。
[1]史子荣.软件加密技术从入门到精通[M].北京:清华大学出版社,2007:69-74.
[2]张翟.加密解密与网络安全技术[M].北京:冶金工业出版社,2002.
[3]段钢.加密与解密[M].北京:冶金工业出版社,2003.
[4]徐海风,曹小军.软件加密方法及技术[J].山西冶金,2007,1.
[5]魏光村,孙忠林,徐燕妮.软件加密技术研究[J].福建电脑,2009,9.
[6]Ivor Horton.Visual C++2010 入门经典[M].北京:清华大学出版社,2010.