基于AES的软件加密解密的设计与实现

2015-12-25 00:57:34唐高阳孙世坤
科技视界 2015年18期
关键词:数组解密字节

唐高阳 孙世坤

(1.沈阳理工大学理学院,辽宁 沈阳 110168;2.朝阳县蒙古族中学,辽宁 朝阳 122000)

1 AES 算法基本原理

AES(Advanced Encryption Standard,高级加密标准)是一个对称分组算法,用来取代DES 算法,从而成为使用广泛的新标准。选用Rijndael 算法来作为AES,Rijndael 是比利时的两位密码学家Daemen和Rijmen 共同设计的。Rijndael 算法是具有分组长度和密钥长度均可变的分组算法。密钥长度和分组长度可以独立地指定为128 位、192位或是256 位。

Feistel 结构是数据分组中的一半被用来修改数据分组中另外一半,然后交换这两部分,AES 算法不是Feistel 结构的算法。AES 定义了一个S 盒,它是由16×16个字节组成的矩阵,包含了8 位值所能表达的256 种可能的变换。

1.1 字节代换

AES 中输入分组是用以字节为单位的正方形矩阵来描述的,该分组被复制到State 数组,这个数组在加密或解密的每个阶段都会被改变,运算完最后的轮密钥加变换后,State 被复制到输出矩阵中。字节代换是一个简单的查表操作,用State 数组中的每个字节的高4 位作为行值,低4 位作为列值,然后取S 盒中对应行列的元素作为输出,最后把State 数组的该字节用输出的这个元素替换。例如,十六进制值19,所对应的S 盒的行值是1,列值是9,S 盒中在此位置的值是D4,然后用D4 替换19。

1.2 行位移

行位移是这样来实现的,State 的第一行保持不变,第二行循环左移1个字节,第三行循环左移2个字节,第四行循环左移3个字节。

1.3 列混淆

列混淆是对每列独立地进行操作。列混淆变换是这样进行的,把经行位移变换操作后的State 数组的一列取出来,然后与一个4×4 的矩阵进行与操作,把得到的结果覆盖取出来的那一列,依次类推,处理完4 列以后就完成了列混淆变换。

1.4 轮密钥加

轮密钥加变换就是把经过列混淆得到的State 与密钥进行异或运算,也就是State 的第1 列与密钥的第1 列进行异或运算,运算结果替换State 的第1 列,后面的几列以此方法类推。

2 实现过程

2.1 定义类CASE 作为AES 算法的实现类

2.2 在CAES 类中实现SetKeys 方法,该方法用于指定密钥及轮密钥加运算的次数

2.3 在CASE 类中实现SubBytes 方法,该方法用于单字节代替变换操作

2.4 GfCalc 方法用来计算单字节的乖加计算,并根据不同的计算模式进行不同的计算

3 运行结果

图1

4 结束语

在商业企业的计算机中往往存在大量的机密文件,这些机密文件对企业的发展将会产生不可估量的作用。如果这些机密文件保管不善,将会使企业遭受巨大的损失。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.

猜你喜欢
数组解密字节
解密“热胀冷缩”
JAVA稀疏矩阵算法
电脑报(2022年13期)2022-04-12 00:32:38
No.8 字节跳动将推出独立出口电商APP
解密“一包三改”
少先队活动(2020年9期)2020-12-17 06:17:31
JAVA玩转数学之二维数组排序
电脑报(2020年24期)2020-07-15 06:12:41
炫词解密
No.10 “字节跳动手机”要来了?
简谈MC7字节码
寻找勾股数组的历程
解密“大调解”
中国卫生(2014年12期)2014-11-12 13:12:38