



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、 AES加密算法基本流程AES算法的数据分组长度为128比特、密钥长度为128/192/256比特。AES加解密包括Nr轮,前面Nr1轮包含S盒变换、行移位、列混淆、轮密钥加4个阶段,最后一轮则少了列混淆这个阶段。Rijnadel(State, CipherKey)/初始化KeyExpansion( CipherKey, ExpandedKey );/生成子密钥AddRoundKey( State, ExpandedKey );/与子密钥位与/ 前Nr1轮for(i =1; i Nr; i+) ByteSub(State);/ S盒ShiftRow(State);/ 行被移位MixColu
2、mn(State);/ 列被混叠AddRoundKey (State, ExpandedKey ); /与子密钥位与/最后一轮ByteSub(State);ShiftRow(State);AddRoundKey (State, ExpandedKey );2、AES加密算法2.1、状态、密钥、轮数状态: 解密过程中的中间数据.以字节为元素的矩阵,或二维数组。所有的操作都在状态上进行。状态可以用以字节为元素的矩阵阵列表示,如上图所示该阵列有 4 行,列数记为Nb,Nb等于分组长度除以4。符号说明:Nb 明密文所含的数据字数。Nk 密钥所含的数据字数。Nr 迭代轮数。2.1、S盒变换S盒变换其实是
3、一个查表的过程,分别取一个字节的高4位和低4位作为行值和列值(因此是),然后在S盒中找到对应的字节替换之。该变换是一个非线性变换。这个非线性就体现在S盒的构造上。S盒变换是AES的唯一非线性变换,是AES安全的关键.关于S盒是按如下方式构造:1)初始化S盒,按行升序排列的字节初始化.行x列y的字节是xy,行号和列号从0开始计数。2)求出每一个元素在GF(28)中的逆。00被映射为它自身。3)仿射变换。对上一步中的每一个字节的每一位作如下变换yi=xi + x(i+4)mod8 + x(i+5)mod8 + x(i+6)mod8 + x(i+7)mod8 + ci,Ci是字节0x63的第i位.该
4、变换用矩阵表示如下所示:2.2、行移位变换在行移位变换中,状态的第一行没有任何变化,第二行循环移位 C1 字节,第三行循环移位 C2 字节,第四行循环移位 C3 字节。位移量 C1、C2 和 C3 与分组长度 Nb 有关,如下表:行移位举例如下所示:2.3、列混合变换列混淆即是用一个常矩阵乘以第二步变换后的矩阵,以达到矩阵中每一个元素都是该元素原所在列所有元素的加权和。2.4、轮密钥加变换状态与轮密钥(16byte)异或相加。轮密钥由种子密钥通过密钥调度算法产生得到,轮密钥长度等于分组长度Nb。3、密钥调度算法 轮密钥是通过密钥调度算法从密钥中产生的,这其中包括两个部分:密钥扩展和轮密钥选取。
5、基本原理如下: 1、所有轮密钥比特的总数等于轮数加1乘以分组长度(如 128 比特的分组长度和10轮迭代,共需要1408比特的密钥); 2、将密钥扩展成一个扩展密钥; 3、轮密钥按下述方式从扩展密钥中选取:第一个轮密钥由一开始的Nb个字组成,第二个轮密钥由接下来的Nb个字组成,如此继续下去。3。1密钥扩展扩展密钥用数组 WNb*(Nr+l)表示,前 Nk 个字是种子密钥,其它的密钥字通过递归定义生成。由于密钥扩展函数取决于 Nk 的值,我们分了 Nk6 和 Nk6 两种情况.对于密钥扩展,用类 C 语言描述如下:KeyExpansion(byte key4*Nk, word wNb(Nr+1)
6、, Nk) begin word temp i = 0 while (i Nk) wi = word(key4i, key4i+1, key4i+2, key4*i+3) i = i+1 end whilei = Nk while (i Nb (Nr+1) temp = wi1 if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rconi/Nk else if (Nk 6 and i mod Nk = 4) temp = SubWord(temp) end if wi = wiNk xor temp i = i + 1 end while
7、end扩展算法如下:最前面的 Nk 个字是由种子密钥填充的。之后的每一个字 Wj 等于前面的字 Wj1 的与 Nk 个位置之前的字 WjNk的异或。而且对于 Nk 的整数倍的位置处的字,在异或之前,对 Wj-1 的进行如下变换:1、字节的循环移位 RotByte, 即当输入字为 (a,b,c,d) 时,输出字为 (b , c, d, a )2、用 S 盒进行变换字中的每个字节3、异或轮常数 Rconi/Nk轮常量是一个字,这个字最右边三个字节总是0。每轮的轮常量均不同,其定义为Rconj = (RCj,0,0,0), 其中RC1 = 1, RCj = 2*RCj-1,且乘法定义在域GF(28)
8、上.j12345678910RCj(HEX)01020408102040801B363。2 轮密钥的选择在进行密钥加时,密钥长必须与分组长相等,所以第 i 轮的密钥与分组长度有关,并且由扩展密钥的字 wNbi, wNbi+1, , wNb*(i+1)构成。如下图所示给出了 Nb=4,Nk=4 时的轮密钥选择情况。4、AES四种模式:ECB、CBC、CFB、OFB4。1 ECBECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。ECB模式由于每块数据的加密是独立的因此加密和解密都可以并行计算,ECB模式最大的缺点是相同
9、的明文块会被加密成相同的密文块,这种方法在某些环境下不能提供严格的数据保密性。4.2 CBCCBC模式对于每个待加密的密码块在加密前会先与前一个密码块的密文异或然后再用加密器加密。第一个明文块与一个叫初始化向量的数据块异或.CBC模式相比ECB有更高的保密性,但由于对每个数据块的加密依赖与前一个数据块的加密所以加密无法并行。与ECB一样在加密前需要对数据进行填充,不是很适合对流数据进行加密。Openssl中的AES_cbc_encrypt允许length不是16(128位)的整数倍,不足的部分会用0填充,输出总是16的整数倍。完成加密或解密后会更新初始化向量IV。4.3 CFB与ECB和CBC模式只能够加密块数据不同,CFB能够将块密文(Block Cipher)转换为流密文(Stream Cipher)。CFB的加密工作分为两部分:1、 将一前段加密得到的密文再加密2、 将第1步加密得到的数据与当前段的明文异或.由于加密流程和解密流程中被块加密器加密的数据是前一段密文,因此即使明文数据的长
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东亚视演艺职业学院《食工仪表自动化》2023-2024学年第二学期期末试卷
- 智慧办公趋势下的技术应用与创新
- 教育技术的新星增强现实教育的优势与挑战
- 南京中医药大学翰林学院《食用真菌学》2023-2024学年第二学期期末试卷
- 武汉信息传播职业技术学院《大学学术英语》2023-2024学年第二学期期末试卷
- 教育技术在商业领域的广泛应用
- 教育机器人技术如何助力学生全面发展与成长
- 平顶山学院《微生物基因工程》2023-2024学年第二学期期末试卷
- 河北地质大学华信学院《第二外语(法语)1》2023-2024学年第二学期期末试卷
- 湖南城建职业技术学院《航空企业管理》2023-2024学年第二学期期末试卷
- 国开2025年《中华民族共同体概论》形考作业1-4终考答案
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程)
- 锚杆加固施工方案(通用版)
- 地源热泵埋管冬夏季换热平衡计算
- 甲骨文专‖教学课件
- 规章制度和操作规程的管理制度范本
- 形式发票格式2 INVOICE
- 清华大学美术学院陶瓷艺术设计系研究生导师及研究课题
- 理论力学运动学题库
- 计算机控制实验报告初稿(共31页)
- 2012年内蒙古鄂尔多斯市中考物理试卷【含答案可编辑】
评论
0/150
提交评论