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

  • 投稿菠菜
  • 更新时间2015-09-23
  • 阅读量829次
  • 评分4
  • 54
  • 0

唐高阳1 孙世坤2

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

【摘 要】随着计算机的普及以及重视知识产权保护,使得软件加密技术蓬勃兴起,AES算法正取代DES算法成为使用广泛的新标准。介绍了如何运用AES算法对文档进行加密和解密,并给出了一个基于Visual C++ 2010开发平台和AES算法的实例。

教育期刊网 http://www.jyqkw.com
关键词 软件加密;AES算法;S盒

作者简介:唐高阳(1971—),男,沈阳人,硕士,讲师,研究方向为智能优化算法、软件工程。

孙世坤(1968—),男,朝阳人,本科,中学高级,研究方向为中学数学教育。

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方法,该方法用于指定密钥及轮密钥加运算的次数

4 结束语

在商业企业的计算机中往往存在大量的机密文件,这些机密文件对企业的发展将会产生不可估量的作用。如果这些机密文件保管不善,将会使企业遭受巨大的损失。AES是一个新的可以用于保护电子数据并被广泛使用的加密算法。

教育期刊网 http://www.jyqkw.com
参考文献

[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.

[责任编辑:汤静]