



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 、状态、密钥、轮数状态:1 解密过程中的中间数据。2 以字节为元素的矩阵,或二维数组。所有的操作都在状态上进行。状态可以用以字节为元素的矩阵阵列表示,如上图所示该阵列有4行,列数记为Nb, Nb 等于分组长度除以4。符号说明:Nb 明密文所含的数据字数。Nk 密钥所含的数据字数。Nr 迭代轮数
3、。.2.1 、 S 盒变换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
4、+6)mod8 + x(i+7)mod8 + ci, Ci 是字节 0x63 的第 i 位。该变换用矩阵表示如下所示:y010001111x01y111000111x11y211100011x20y311110001x30y411111000 x40y501111100x51y600111110x61y700011111x702.2 、行移位变换在行移位变换中, 状态的第一行没有任何变化, 第二行循环移位 C1 字节,第三行循环移位 C2 字节,第四行循环移位 C3 字节。位移量 C1 、C2 和 C3 与分组长度 Nb 有关, 如下表:行移位举例如下所示:.2.3 、列混合变换列混淆即是用一
5、个常矩阵乘以第二步变换后的矩阵, 以达到矩阵中每一个元素都是该元素原所在列所有元素的加权和。2.4 、轮密钥加变换状态与轮密钥(16byte )异或相加。轮密钥由种子密钥通过密钥调度算法产生得到,轮密钥长度等于分组长度Nb。3、密钥调度算法轮密钥是通过密钥调度算法从密钥中产生的,这其中包括两个部分:密钥扩展和轮密钥选取。基本原理如下:1、所有轮密钥比特的总数等于轮数加1 乘以分组长度( 如 128比特的分组长度和 10 轮迭代,共需要1408 比特的密钥 ) ;2、将密钥扩展成一个扩展密钥;3、轮密钥按下述方式从扩展密钥中选取:第一个轮密钥由一开始的Nb 个字组成,第二个轮密钥由接下来的Nb个
6、字组成,如此继续下去。.3.1 密钥扩展扩展密钥用数组WNb*(Nr+l)表示,前Nk个字是种子密钥,其它的密钥字通过递归定义生成。 由于密钥扩展函数取决于 Nk 的值,我们分了 Nk6 和 Nk 6 两种情况。 对于密钥扩展,用类 C 语言描述如下:KeyExpansion(byte key4*Nk, word wNb*(Nr+1), Nk)beginword tempi = 0while (i Nk)wi = word(key4*i, key4*i+1, key4*i+2, key4*i+3)i = i+1end whilei = Nkwhile (i 6 and i mod Nk = 4
7、)temp = SubWord(temp)end ifwi = wi-Nk xor tempi = i + 1end whileend扩展算法如下:最前面的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轮常量是一个字, 这个字最右边三个字节总是0。每轮的轮常量均不同, 其定义为Rconj= (RCj,
8、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是最简单的块密码加密模式,加密前根据加密块大小(如AES为 128 位)分成若干块,之后将每块使用相同的密钥单独加密,
9、解密同理。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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育学课程组织方式专题
- 毛衣设计讲课课件
- 中心静脉置导管的护理
- 室内设计风格提案
- 幼儿情绪教育课件:我的情绪小屋
- 服务质量好的企业成功要素
- 艺术设计大师的跨界艺术人生
- 2024-2025安全标准化安全培训考试试题含答案(巩固)
- 高中学生思想教育
- 2025年厂级职工安全培训考试试题加下载答案
- 提高学生英语听力能力-英语教师的演讲
- 2025年湖北省八市高三(3月)联考英语试题(含答案和音频)
- 县域产业布局与升级-深度研究
- 第十六周《“粽”享多彩端午深耕文化传承》主题班会
- 日间患者流程护理质量改善项目汇报
- 创意美术网络安全课件
- 上海电信2025年度智慧城市合作协议2篇
- 2024燃煤发电企业安全生产标准化达标评级标准
- 产前检查妇产科教学课件
- 气球婚礼派对合同范例
- 2024无人机测评规范
评论
0/150
提交评论