一种非对称加密算法的程序实现
2016-03-22刘俊
刘俊
摘要:AES是美国国家标准和技术研究所宣布采用的高级加密标准,被全世界广泛使用。本文对AES算法进行了详细地分析和研究,在此基础上阐述了该算法的实现原理和过程,并通过编程简单实现该算法的加密解密过程。
关键词: AES;加密算法;解密算法
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)02-0184-03
Abstract: AES is announced the use of advanced encryption standards by United States national standards and Technology Institute. It was widely used in the world. In this paper, the AES algorithm is researched deeply on implementation principle and process of the algorithm,the encryption and decryption of the algorithm. Then, algorithm is realized by programming.
Key words: AES; encryption algorithm; decryption algorithm
1概述
互联网的飞速发展极大改变了人们工作生活方式,是信息往来的重要手段。人们可以通过互谅网浏览远程主机的资源,或者可以通过email在网上交传递邮件信息,极大地提高了工作效率。然而,互联网络给人们带来方便的同时,也给用户提出了新的安全挑战。TCP/IP协议是国际互联网的核心通信协议,是对等计算机通信规则和规范的集合,TCP/IP协议在当初设计实现时是存在一定缺陷的,数据在传输到目的主机前需要经过中间计算机和通信线路,而这些中间路径对于源主机和目的主机都是透明的,或者说收发主机用户并不关心这些中间过程。数据在传输过程中可能受到第三方的攻击干扰,如侦听、窃取等。因此互联网上传输的数据会经受各种安全挑战。
数据加密技术和数字签名技术是解决网络信息安全的技术手段,其理论支撑是密码学。它的基本思想是对发送端发出原始明文进行复杂的变换,变换数据不具有规律性,十分杂乱,称之为加密过程。传输途中的中间主机很难破译原始明文,达到数据保密的效果。而合法的终端计算机用户则可以借助密钥密钥和解密算法将密文还原成明文。而加密算法是密码学的重要研究内容,高级加密标准(AES)是一种流行的非对称加密算法,有关资料文献中有该算法描述,但附有完整的程序实现较少,本文介绍该算法程序实现,让大家建立该算法感性认识。。
2 AES加密算法
2.1算法描述
AES算法是一个数据块和密钥长度都可变的迭代分组加密算法,数据块长度和密钥长可分别为128,192,256位。在加密之前,对数据块做预处理。首先,把数据块写成字的形式,每个字包含4个字节,每个字节包含8个比特信息;其次,把字记为列的形式。这样数据块就可以用以下形式:
AES算法的加密是将明文块经过白化技术处理后,进入轮函数,而入轮函数又由字节代换、行移变换、列变换和密钥4个变换组成,这样经过Nr轮之后,把明文变换成密文块。为了在同一算法中实现加密和解密,需要对最后一轮做必要的调整,最后一轮没有列变换。
2.2算法实现
(1)AES轮变换
AES算法属于分组密钥算法,分组密钥算法加密过程、解密过程、输入分组和输出分组过程中的中间分组都是128比特。AES的轮变换是基于AddRoundKey,SubBytes,ShiftRow和MixColumn等4种变换的复合。限于篇幅,仅介绍前面两种变换。AddRoundKey变换过程密钥将会与原矩阵合并。每次循环加密中,都会由主密钥产生一把回合密钥(通过Rijndael密钥生成方案产生),密钥大小会跟原矩阵一样,以与原矩阵中每个对应的字节作异或(⊕)运算。其示意图如图1所示。
(2)SubBytes变换,字节变换(SubBytes)是作用在字节上的一种非线性字节变换,这个变换(或称S-盒)是可逆的,它定义为图2的形式。这种利用有限域上的逆映射构造S-盒好处是:表述简单,使人相信没有陷门,最重要的是其具有良好的抗差分析和线性分析的能力。附件的仿射变换,目的是用来复杂化S-盒的代数表达,以防止代数插值攻击。当然具体实现时,S-盒也可用查表法来实现。其部分代码如下:
(3)加解密算法程序实现
加密主要是实现对数据信息的加密,先读进明文,利用密钥产生轮子密钥,然后进行各种轮变化,最终形成密文,其实现流程图如下3所示。解密算法程序实现这部分主要实现对加密数据信息进行解密。其具体实现是:先读进密文,利用密钥产生轮子密钥,然后进行各种逆轮变换,最后得出明文。其实现流程图如图4所示。
3 结论
AES在实现方面具有速度快、可并行处理、对处理器的结构无特殊要求,算法设计相对简单,分组长度可以改变,而且具有很好的可扩充性,本文对AES算法进行了详细地分析和研究,本文介绍了AES加密解密算法基本思想和主要步骤, 最后用程序实现该算法。
参考文献:
[1] 赵勇.高级加密标准AES的实现研究[D].电子科技大学,2004.
[2] 赵战生、吕述望.信息安全保密教程[M].中国科学技术大学出版社,2006.
[3] James McCaffrey.用新的高级加密标准(AES)保持你的数据安全.MSDN Magazine,2003.
[4] 卢开澄.计算机密码学-计算机网络中的数据保密与安全[M].清华大学出版社,2007.
[5] 谷利泽,杨义先.现代密码学教程[M].北京邮电大学出版社,2009.
[6] Joan Daemen、Vincent Rijm.高级加密标准(AES)算法-Rijndael的设计[M].清华大学出版社,2004.
[7] John F.Watts.表面分析(AES)引论[D].华东理工大学出版社,2008.