分组密码体制.PPT

  1. 1、本文档共133页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
*/129 (三)AES加密时的轮变换:(由三个部分组成) (1)初始轮密钥加法; (2)中间轮轮变换; (3)最后轮轮变换。其中轮变换由前面四个不同的变换组成。 设输入明文、密文数据块为IB、OB (128bit,16个字节) ,且共有Nr轮变换。Ii为第i轮输入,ERKi为第i轮加密密钥。 1. 初始轮密钥加法: I1= AddRoundKey(IB, ERK0) = IB⊕ ERK0 2. 中间轮变换 ( i =1~Nr-1) 用伪代码描述为: RoundTransformation(Ii, ERKi) ; { Temp1=ByteSub(Ii) ; 对每个字节均作相应替换 Temp2= ShiftRows(Temp1); Temp3= MixColumns(Temp2); Oi= AddRoundKey(Temp3, ERKi); } */129 3. 最后轮(第 Nr轮)变换 用伪代码描述为: FinalTransformation(INr, ERKNr) ; { Temp1=ByteSub(INr); Temp2= ShiftRows(Temp1); OB= AddRoundKey(Temp2, ERKNr); } 第Nr轮输入INr ByteSub ShiftRows AddRoundKey 第Nr轮输出OB 第Nr轮加密密钥ERKNr Temp1 Temp2 ERK0 IB AddRoundKey I1 第i轮输出Oi 第 i 轮输入Ii ByteSub ShiftRows MixColumns AddRoundKey 第i轮加密密钥ERKi Temp1 Temp2 Temp3 中间轮变换 ( i =1~Nr-1) AES加密时的轮变换(续) 加密算法用伪代码描述如右图 四川大学电子信息学院 */129 (四)AES解密时的轮变换 AES的解密过程将使用前面四种交换的逆变换函数,即: InvSubBytes():对应函数SubBytes() InvShifRows():对应函数ShifRows() InvMixColumns():对应函数MixColumns() 固定多项式取为a (x) = {0B}x3 + {0D}x2 + {09}x + {0E} 对应4字节向量为( 0B 0D 09 0E),是MixColumns函数固定多项式 {03} x3+{01} x2+{01}x +{02}的逆多项式,模为(x4 + 1) ; AddRoundKey():与逆变换函数相同。 4种函数以与加密过程相反的顺序对由密文映射得到状态矩阵进行变换,当然解密时每轮变换用的轮密钥和加密时的一样,但顺序相反。加、解密过程应该对应为(下页): 四川大学电子信息学院 */129 第Nr轮输入INr ByteSub ShiftRows AddRoundKey 第Nr轮输出OB 第Nr轮加密密钥ERKNr Temp1 Temp2 ERK0 IB AddRoundKey I1 第i轮输出Oi 第 i 轮输入Ii ByteSub ShiftRows MixColumns AddRoundKey 第i轮加密密钥ERKi Temp1 Temp2 Temp3 中间轮变换 ( i =1~Nr-1) 密文数据块 明文数据块 加密过程 加密第i轮输出Oi InvByteSub InvShiftRows InvMixColumns AddRoundKey 第i轮加密密钥ERKi Temp1 Temp2 Temp3 INr InvByteSub InvShiftRows AddRoundKey 输出OB 第Nr轮加密密钥ERKNr Temp1 Temp2 ERK0 IB AddRoundKey I1 加密第 i 轮输入Ii 中间轮变换 ( i =Nr-1 ~1 ) 解密过程 四川大学电子信息学院 */129 (五)AES解密过程的结构优化 注意AES基本函数的一些特点: 1. ByteSub( )与ShiftRows( )运算次序可交换。 即 ShiftRows(ByteSub(Ii)) = ByteSub(ShiftRows( Ii)) 同样有: InvShiftRows(InvByteSub(Ii)) = InvByteSub(InvShiftRows( Ii)) 有此特点是因为: ShiftRows变换仅对状态矩阵中每行的所有

文档评论(0)

kch + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年10月08日上传了教师资格证

1亿VIP精品文档

相关文档