密码学实验报告

xiaobiao.jpg 江苏大学

学院     计算机学院

专业     信息安全0902

姓名     ***

学号     3090604035

小组成员    *******

AES对称加密算法实现

一.AES对称加密算法实现原理

AES(The Advanced Encryption Standard)接受一个128位的明文,并且在一个128、192或者256位秘密密钥的控制下产生一个128位的密文。它是一个替代-置换网络的设计,并且带有一个称作轮(rand)的步骤的集合,其中轮数可以是9、11或者13(取决于密钥的长度),这样可以将明文映射为密文。

AES实际上能定义为在域GF(2)的元素上的一系列标量的运算。它实质上是在整数模2所组成的域,但是它扩展到了多项式域GF(2)[x]中。为了构造一个域,需要使用一个能够不被任何一个具有相同底GF(2)的度数更小的多项式整除的多项式,在AES中选择了v(x)= x^8 + x^4 + x^3 + x + 1。用整数存储时,它表示值0x11B。域中的加法是一个简单异或(xor)操作。乘法就是乘以其他的多项式。一个单元a的乘法逆元是另一个单元b,使得ab模AES的多项式和多项式p(x)=1是同余的。a(x)=0的逆是它本身。

二.AES对称加密算法实现过程

AES 算法是分组密码算法,它的输入分组、输出分组以及加/ 解密过程中的中间分组都是128比特。(对称密码算法根据对明文消息加密方式的不同可分为两大类,即分组密码和流密码。分组密码将消息分为固定长度的分组,输出的密文分组通常与输入的明文分组长度相同。)

    1AES 的加密与解密框图如图所示

(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 是一个给定的转换表。R: 行置换。C: 列置换。

s′(x) = a (x) á s (x)

这里á 是特殊的乘法运算

(2) 解密变换

解密变换是加密变换的逆变换。

2、AES(128bits密钥)加密解密流程如下图所示

若一个程序或者两个程序之间没有前后的依赖关系(即一个运算的输入与另一个运算的输出无关),则在具有多个处理器的条件下这些运算可以在同一时间段并行运行。AES算法中的绝大多数运算都是基于state上进行的,而state可以表示为一个四行,Nb列的矩阵,算法的变换都是独立作用于state的字节、行或者列无关,所以可以将变换对state的运算分割成对state的每个字节、行或列的并行运算。字节替换是独立作用在每个状态字节上的。假设做一次S盒替换需要一个时间单位,串行模式下需要4Nb个时间单位,但在并行模式下这些S盒替代可以在一个时间单位内进行,并行模式速度是穿行模式速度的4Nb倍;位移变换是作用在独立的行上的,若对一行做一次移位操作占用一个单位时间,串行模式下需用3个单位时间,并行模式下只用一个单位时间,是串行模速度的3倍;列变换独立作用在state的每一列上,若对一列做一次需一个单位时间,速度是串行模式的Nb倍;密钥系统是作用在每个独立字节上的,若对一个字节进行操作需用一个单位时间,则在串行模式下密钥变换需要4Nb个单位时间,并行模式下只需要一个单位时间,速度是串行模式的4Nb倍。

六.分析与总结

   AES算法流程主要有三个大的模块,即密钥扩展模块、加密模块和解密模块。密钥扩展模块由产生加密密钥的模块和解密密钥的模块组成;加、解密模块均由AddRoundkey模块、轮函数模块、FinalRound变换模块组成,其中最重要的是轮函数模块,它是AES算法的核心模块。

   通过这次课程设计,更加清晰的了解了AES算法,同时也熟悉了C++编程,由于是和同学合作完成,使用C++的封装性很重要,一个好的类既安全又代码效率高,可以减少大量重复的劳动,所以这次也算C++的练习吧。不过这次课设还是存在不足的,比如加密结果是乱码,这一问题尚未解决,有待进一步学习。

                                                              2012.06.20

 

第二篇:密码学实验报告三

《现代密码学》实验报告

相关推荐