AES原理及其在c语言上的实现

AES原理及其在c语言上的实现

ID:44713551

大小:132.44 KB

页数:24页

时间:2019-10-25

AES原理及其在c语言上的实现_第1页
AES原理及其在c语言上的实现_第2页
AES原理及其在c语言上的实现_第3页
AES原理及其在c语言上的实现_第4页
AES原理及其在c语言上的实现_第5页
资源描述:

《AES原理及其在c语言上的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、AES加密解密算法及其在c语言上的实现引言对称密码算法主要用于保证数据的机密性,通信双方在加密/解密过程中使用它们共享的单一密钥。对称密码算法的使用相当广泛,密码学界已经对它们进行了深入的研究[1]。最常用的对称密码算法是数据加密标准(DES)算法,它是由IBM在美国国家安全局(NSA)授意之下研制的一种使用56位密钥的分组密码算法。自1977年公布成为美国政府的商用加密标准以来已使用20多年[2]。DES的主要问题是其密钥长度较短,已不适合于当今分布式开放网络对数据加密安全性的要求。在DES每隔五年的评估会

2、议中,最后一次在1998年美国政府终于决定不再继续延用DES作为联邦加密标准,也就表明了DES将退出加密标准的舞台,而新的标准AES(AdvancedEncryptionStandard)将粉墨登场[3]。AES是美国国家标准技术研究所NIST旨在取代DES的新一代的加密标准[3~5]。NIST对AES候选算法的基本要求是:对称分组密码体制;密钥长度支持128,192,256位;明文分组长度128位;算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮征集、分析、测试,共产生了15个候选算法。19

3、99年3月完成了第二轮AES的分析、测试。1999年8月NIST公布了五种算法(MARS,RC6,Rijndael,Serpent,Twofish)成为候选算法。最后,Rijn2dael[5],这个由比利时人设计的算法与其它候选算法在成为高级加密标准(AES)的竞争中取得成功,于2000年10月被NIST宣布成为取代DES的新一代的数据加密标准,即AES。尽管人们对AES还有不同的看法[6~8],但总体来说,Rijndael作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有

4、三个密钥长度:128,192,256比特,相对而言,AES的128比特密钥比DES的56比特密钥强1021倍[4]。AES加密/解密算法原理对称密码算法根据对明文消息加密方式的不同可分为两大类,即分组密码和流密码。分组密码将消息分为固定长度的分组,输出的密文分组通常与输入的明文分组长度相同。AES算法属于分组密码算法,它的输入分组、输出分组以及加/解密过程中的中间分组都是128比特。密钥的长度K为128,192或256比特。用Nk=4,6,8代表密钥串的字数(1字=32比特),在本文编制的程序中由用户选定。用

5、Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系见表1)。每一轮都需要一个和输入分组具有同样长度(128比特)的扩展密钥Ke的参与。由于外部输入的加密密钥K长度有限,所以在AES中要用一个密钥扩展程序(KeyExpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密密钥。AES的加密与解密框图如图1所示。128位数据分组128位数据分组与扩展秘钥的异或运算与扩展秘钥的异或运算反S盒变换S盒变换反行变换变换行变换变换列变换变换反列变换变换与扩展秘钥的异或与扩展秘钥的异或S盒变换反S盒变换行变

6、换反行变换输出128位数据与扩展秘钥的异或运算输出128位数据与扩展秘钥的异或运算AES加密与解密流程图(1)加密变换设X是AES的128比特明文输入,Y是128比特的密文输出,则AES密文Y可以用下面的复合变换表示:Y=Ak(r+1)·R·S·Akr·C·R·S·Ak(r21)·⋯·C·R·S·Ak1(X)其中“·”表示复合运算。这里Aki:表示对X的一个变换Aki(X)=XÝKi(Ki为第i轮的子密钥,为比特串的异或运算)。S:S盒置换。即对每一个字节用S2Box做一个置换。S2Box是一个给定的转换表。

7、R:行置换。C:列置换。这里是特殊的乘法运算,将在下面详细介绍。(2)解密变换解密变换是加密变换的逆变换,这里不再详述。 AES加密/解密算法的实现 分组加密表1是三种不同类型的AES加密密钥分组大小与相应的加密轮数的对照表。加密开始时,输入分组的各字节按表2的方式装入一个矩阵State中。如输入ABCDEFGHIJKLMNOP,则输入块影射到如表2的状态矩阵State中。表1AES类型秘钥长度分组大小加密轮数AES-1284字4字10AES-1926字4字12AES-2568字4字14字表2AEIMBFJN

8、CCAODHLP加密过程主程序由下面的伪代码描述。其中的子程序SubBytes(),ShiftRows(),MixColumns()和Ad2dRounKey()将在接下来的部分介绍,密钥扩展程序(KeyExpansion)将在下面介绍。Cipher(bytein[434],byteout[434],wordw[43(Nr+1)])beginbytestate[4,4]state=in;AddRoun

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。