




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、 AES加密算法基本流程AES算法的数据分组长度为128比特、密钥长度为128/192/256比特。AES加解密包括Nr轮,前面Nr-1轮包含S盒变换、行移位、列混淆、轮密钥加4个阶段,最后一轮则少了列混淆这个阶段。Rijnadel(State, CipherKey)/初始化KeyExpansion( CipherKey, ExpandedKey );/生成子密钥AddRoundKey( State, ExpandedKey );/与子密钥位与/ 前Nr-1轮for(i =1; i < Nr; i+) ByteSub(State);/ S-盒ShiftRow(State);/ 行被移
2、位MixColumn(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盒变
3、换S盒变换其实是一个查表的过程,分别取一个字节的高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)
4、mod8 + x(i+7)mod8 + ci,Ci是字节0x63的第i位。该变换用矩阵表示如下所示:2.2、行移位变换在行移位变换中,状态的第一行没有任何变化,第二行循环移位 C1 字节,第三行循环移位 C2 字节,第四行循环移位 C3 字节。位移量 C1、C2 和 C3 与分组长度 Nb 有关,如下表:行移位举例如下所示:2.3、列混合变换列混淆即是用一个常矩阵乘以第二步变换后的矩阵,以达到矩阵中每一个元素都是该元素原所在列所有元素的加权和。2.4、轮密钥加变换状态与轮密钥(16 byte)异或相加。轮密钥由种子密钥通过密钥调度算法产生得到,轮密钥长度等于分组长度 Nb&
5、#160;。3、密钥调度算法 轮密钥是通过密钥调度算法从密钥中产生的,这其中包括两个部分:密钥扩展和轮密钥选取。基本原理如下: 1、所有轮密钥比特的总数等于轮数加1乘以分组长度(如 128 比特的分组长度和10轮迭代,共需要1408比特的密钥); 2、将密钥扩展成一个扩展密钥; 3、轮密钥按下述方式从扩展密钥中选取:第一个轮密钥由一开始的Nb个字组成,第二个轮密钥由接下来的Nb个字组成,如此继续下去。3.1密钥扩展扩展密钥用数组 WNb*(Nr+l)表示,前 Nk 个字是种子密钥,其它的密钥字通过递归定义生成。由于密钥扩展函数取决于 Nk 的值,我们分了 Nk6 和 Nk6 两种情况。对于密钥
6、扩展,用类 C 语言描述如下:KeyExpansion(byte key4*Nk, word wNb*(Nr+1), Nk) begin word temp i = 0 while (i < Nk) wi = word(key4*i, key4*i+1, key4*i+2, key4*i+3) i = i+1 end whilei = Nk while (i < Nb * (Nr+1) temp = wi-1 if (i mod Nk = 0) temp = SubWord(RotWord(temp) xor Rconi/Nk else if (Nk > 6 and i mo
7、d Nk = 4) temp = SubWord(temp) end if wi = wi-Nk xor temp i = i + 1 end while end扩展算法如下:最前面的 Nk 个字是由种子密钥填充的。之后的每一个字 Wj 等于前面的字 Wj-1 的与 Nk 个位置之前的字 Wj-Nk的异或。而且对于 Nk 的整数倍的位置处的字,在异或之前,对 Wj-1 的进行如下变换:1、字节的循环移位 RotByte, 即当输入字为 (a,b,c,d) 时,输出字为 (b , c, d, a )2、用 S 盒进行变换字中的每个字节3、异或轮常数 Rconi/Nk轮常量是一个字,这个字最右边三
8、个字节总是0。每轮的轮常量均不同,其定义为Rconj = (RCj,0,0,0), 其中RC1 = 1, RCj = 2*RCj-1,且乘法定义在域GF(28)上。j12345678910RCj(HEX)01020408102040801B363.2 轮密钥的选择在进行密钥加时,密钥长必须与分组长相等,所以第 i 轮的密钥与分组长度有关,并且由扩展密钥的字 wNb*i, wNb*i+1, , wNb*(i+1)构成。如下图所示给出了 Nb=4,Nk=4 时的轮密钥选择情况。4、AES四种模式:ECB、CBC、CFB、OFB4.1 ECBECB是最简单的块密码加密模式,加密前根据加密块大小(如A
9、ES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。ECB模式由于每块数据的加密是独立的因此加密和解密都可以并行计算,ECB模式最大的缺点是相同的明文块会被加密成相同的密文块,这种方法在某些环境下不能提供严格的数据保密性。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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机柜间通风系统协议书
- 船员服务协议书
- 维修水沟协议书
- 城镇商品房预订协议书
- 发制品合作合同协议书
- 提取公积金托管协议书
- 退耕还田协议书
- 调换门面协议书
- 生育补贴协议书
- 酒店团购协议书
- 中班语言学习活动优化计划
- 玻璃体积血的治疗
- 2025年货物购销合同范本
- 2025届北京市北京一零一中学生物七下期末质量检测试题含解析
- 2025Q1 BrandOS出海品牌社媒影响力榜单-OneSight
- 2025陕西延安通和电业有限责任公司供电服务用工招聘103人笔试参考题库附带答案详解
- 《生成式人工智能职业技能评估规范》
- 颁奖礼仪队培训体系
- 2025年新媒体运营专员面试题及答案
- 心血管-肾脏-代谢综合征患者的综合管理中国专家共识2025解读-1
- 儿童发展问题的咨询与辅导-案例1-5-国开-参考资料
评论
0/150
提交评论