基于Jave的AES加密算法的实现

2016-06-25 23:30欧贤张婧
科教导刊·电子版 2016年15期
关键词:加密算法

欧贤+张婧

摘 要 对数据加密是保护数据安全唯一实用的方法,它是数据保护在技术上最重要的防线。本文主要论述AES算法的加、解密实现的原理与安全性的分析,并使用Jave语言实现AES加密算法。

关键词 AES 加密算法 Java

中图分类号:TP311 文献标识码:A

1 AES算法概述

1995年,美国国家标准技术所开始寻找一种新的、更强有力的加密算法。寻找的结果最终成为了高级加密标准,即AES。美国政府鉴于破密技术的快速演进,虽然到目前为止并无一致命性的攻击方法可以直接破解DES(目前的破解方法大多针对DES密钥长度太短来破解),但是这些发展已直接影响了DES密码系统的安全性,所以在1998年对世界公开征求下一代的密码算法,用以取代DES算法。

2 AES算法过程分析

AES中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。State可以用4€?的矩阵表示。AES算法结构对加密和解密的操作,算法由轮密钥开始,并用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所示)。AES算法的主循环State矩阵执行轮迭代运算,每轮都包括所有4个阶段的代换,分别是在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和AddRoundKey,(由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。)最后执行只包括3个阶段(省略 MixColumns变换)的最后一轮运算。

AES算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。它涉及如下三个模块:

(1)位置变换(rotword)——把一个4字节的序列[A,B,C,D]变化成[B,C,D,A];

(2)S盒变换(subword)——对一个4字节进行S盒代替;

(3)变换Rcon[i]——Rcon[i]表示32位比特字[xi-1,00,00,00]。

这里的x是(02),如 Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]……

扩展密钥的生成:扩展密钥的前Nk个字就是外部密钥K;以后的字W[[i]]等于它前一个字W[[i-1]]与前第Nk个字W[[i-Nk]]的“异或”,即W[[i]]=W[[i-1]]W[[i- Nk]]。但是若i为Nk的倍数,则W[i]=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]。

3 AES算法的实现

现在笔者已研究了构成 AES 加密算法的各个成分,将用Java来实现它。首先初始化此密钥生成器,使其具有确定的密钥大小AES 要求密钥长度为 128[4]。核心代码如下:

4总结

数据加密是保护数据的重要手段。AES的提出是经过公众广泛的参与专家的严密论证。它不再是保密的算法。AES将加密密钥的位数提高到128bit以上,这样就极大地增加了破解密文的难度。Rijndael被选为AES是经过多个国家的密码方面的专家广泛讨论的结果。Rijndael算法具有灵活、简便、抗击多种密码分析的优点。它的目标是发展成能安全地用于商业,政治的加密算法。

参考文献

[1] Joan DaemenVincent Rijmen,谷大武,徐胜波.高级加密标准(AES)算法——Rijndael的设计[M].清化大学出版社,2003.

[2] 卢开澄.计算机密码学—计算机网络中的数据保密与安全(第3版)[M].清化大学出版社,2002.

[3] 鹿钦鹤.高级加密算法的研究[D].长春:长春理工大学,2006.

[4] 马虹博.高级加密标准及短分组加密技术应用研[D].湖南:中南大学,2006.

猜你喜欢
加密算法
HES:一种更小公钥的同态加密算法
基于小波变换和混沌映射的图像加密算法
Hill加密算法的改进
对称加密算法RC5的架构设计与电路实现
基于混沌映射和DNA编码的图像加密算法
基于Arnold变换和Lorenz混沌系统的彩色图像加密算法