网站大量收购独家精品文档,联系QQ:2885784924

4-高级数据加密标准教程.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * 1、密钥扩展 ①密钥扩展产生扩展密钥。 ②用一个字元素的一维数组W[Nb*(Nr+1)]表示扩展密钥。 ③用户密钥放在数组最开始的Nk个字中。 ④其它的字由它前面的字经过处理后得到。 ⑤有 Nk≤6 和 Nk6 两种密钥扩展算法。 五、轮密钥生成 1、密钥扩展 ⑴ Nk≤6 的密钥扩展 ①最前面的Nk个字是由用户密钥填充的。 ②之后的每一个字W[j]等于前面的字W[j-1]与Nk 个位置之前的字W[j-Nk]的异或。 ③而且对于Nk的整数倍的位置处的字,在异或之前,对W[j-1]进行Rotl变换和ByteSub变换,再异或一个轮常数Rcon 。 五、轮密钥生成 五、轮密钥生成 W0 W1 W2 … WNk-1 WNk WNk+1 … 用户密钥 当 j 不是Nk的整数倍时: Wj=Wj-Nk ⊕ Wj-1 当 j 是Nk的整数倍时: Wj=Wj-Nk ⊕ByteSub (Rotl ( Wj-1) )⊕ Rcon[j/Nk]; 说明: Rotl是一个字里的字节以字节为单位循环左移位函数,设W=(A,B,C,D),则Rotl(W)=(B,C,D,A)。 轮常数Rcon与Nk无关,且定义为: Rcon[i] = (RC[i],‘ 00’,‘ 00’,‘ 00’) RC[0] = ‘ 01’ RC[i] = xtime(RC[i-1]) 五、轮密钥生成 1、密钥扩展 ⑵ Nk6 的密钥扩展 说明: 与Nk≤6 的密钥扩展相比, Nk6 的密钥扩展的不同之处在于:如果j被Nk除的余数=4,则在异或之前,对W[j-1]进行ByteSub变换。 增加了ByteSub变换 。因为当Nk6时密钥很长,仅仅对Nk的整数倍的位置处的字进行ByteSub变换,就显得ByteSub变换的密度较稀,安全程度不够强。 五、轮密钥生成 2、轮密钥选择 根据分组的大小,依次从扩展密钥中取出轮密钥。 前面的Nb个字作为轮密钥0,接下来的Nb个字作为轮密钥1。… W W0 W1 … WNb-1 WNb … W2Nb-1 … 第一轮密钥 第二轮密钥 五、轮密钥生成 六、AES的加密算法 AES的加密算法由以下部分组成: ①一个初始轮密钥加变换。 ② Nr-1轮的标准轮变换。 ③最后一轮的非标准轮变换。 加密算法: Encryption(State,CipherKey) { KeyExpansion(CipherKey, RoundKey) AddRoundKey(State, RoundKey) For(I=1;INr;I++) Round(State, RoundKey) {ByteSub(State); ShiftRow(State); MixColumn(State); AddRoundKey(State, RoundKey)} FinalRound(State, RoundKey) { ByteSub(State); ShiftRow(State); AddRoundKey(State, RoundKey);} } 注意: 第一步和最后一步都用了轮密钥加,因为任何没有密钥参与的变换

文档评论(0)

我是兰花草 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档