- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一圈变换(1) 非线性代替(S-盒):包括2步 在GF(28)上求每个字节关于模m(x)的乘法逆元素,‘00’的逆元定义为‘00’;(0063, 017c) 应用GF(2)上的一个仿射变换: 一圈变换(2) 每个字节aij经过以上2步变换后,记为bij。 可以将每个可能的aij值对应的bij值制成表格,通过查表的方式来实现S-盒代替,见下表。其中‘xy’代表1个字节的16进制表示。 一圈变换(3) 行循环左移(ShiftRow):每一行以字节为单位循环左移,左移的字节数见右表。因此,第1行不移位,第2行左移1个字节… 列混合变换(Mixcolumn):对每一列中每个字节a(x),令b(x)=c(x)?a(x),其中c(x)为:c(x)=’03’x3+’01’x2+’01’x+’02’ 与扩展密钥相异或: aij?kij=bij Nb C0 C1 C2 C3 4 0 1 2 3 6 0 1 2 3 8 0 1 3 4 一圈变换(4) 一圈结构图: Step1. ByteSub(State) Step2. ShiftRow(State) Step3. MixColumn(State) Step4. AddRoundKey(State, RoundKey) State S-盒 行循环左移 c(x)?A A ? RoundKey Round(State, RoundKey) 密钥扩展(1) 扩展密钥是一个以4字节大小为单位(用Word表示)的线性数组。当Nk大于6的时候有一点不同。开始Nk个Word是加密用的密钥,以后每个Word通过对K实行变换得到。 当Nk≤6时, 若Nk ? i,则Word[i] = Word[i-1] ? Word[i-Nk] ;(i不能被Nk整除) 若Nk | i,则先循环左移,然后查非线性变换表(S-盒),之后再与常量Rcon[i/Nk]异或,其中:Rcon[i]=(RC[i],’00’,’00’,’00’),RC[1]=1,RC[i]=x·(RC[i-1])=x(i-1)。最后,与Word[i-Nk]异或。 当Nk=8时,若i mod Nk = 4,则先查非线性变换表,再与Word[i-Nk]异或。 密钥扩展的伪代码: KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr + 1)], Nk) { for (i=0 ;i Nk;i++) w[i] = word[key[4*i],key[4*i+1],key[4*i+2],key[4*i+3]]; for (i = Nk ;i Nb * (Nr + 1); i++){ word temp = w[i - 1]; if (i % Nk == 0) temp = SubWord(RotWord(temp))^ Rcon[i / Nk]; else if (Nk == 8 and i % Nk == 4) temp = SubWord(temp); S盒 w[i] = w[i - Nk] ^temp; 异或 } } 密钥扩展(2) 可以从扩展密钥中选择Round key,例如:当Nb=6,Nk=4时,扩展密钥和各圈子密钥的选择如下: w[0]=key[0,1,2,3] w[1]=key[4,5,6,7] w[2]=key[8,9,10,11] w[3]=key[12,13,14,15] w[4]=w[0]^temp w[5]=w[1]^w[4] w[6]=w[2]^w[5] w[7]=w[3]^w[6] w[8]=w[4]^temp w[9]=w[5]^w[8] 加密算法描述 整个算法可以用 下面的代码表示: Rijndael(State, CipherKey) { KeyExpansion(CipherKey, ExpandedKey); //扩展密钥 AddRoundKey(State, ExpandedKey); //与扩展密钥异或 for ( i=1; iNr; i++) Round(State, ExpandedKey+Nb*i);每一圈 FinalRound(State, ExpandedKey+Nb*Nr); //最后一圈不做列混合变换 } AES解密算法(1) 由于Rijndael算法的每一步都是可逆的 ,因此一圈的逆过程如下: InvRound(State, RoundKey) { AddRoundKey(State, RoundKey); InvMixColumn(State); InvShiftRow(State); InvByteSub(Sta
您可能关注的文档
最近下载
- 高一化学离子反应练习题.doc VIP
- 围手术期疼痛管理新进展.pptx
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人笔试模拟试题及答案解析.docx VIP
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人考试备考试题及答案解析.docx VIP
- 培训课件-冠心病的诊疗.ppt VIP
- 统编版道德与法治小学二年级上册《1 假期有收获》课堂教学课件PPT公开课.pptx VIP
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人笔试备考试题及答案解析.docx VIP
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人备考题库及答案解析.docx VIP
- 2025年山东黄金集团井下技能工人招聘(2000人)考试备考题库及答案解析.docx VIP
- 康明斯KTA19-G2型柴油机.pdf VIP
文档评论(0)