- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AES加密算法主要步骤
1 AES加密算法主要步骤1.1 AES算法整体描述l?给定一个明文x,将State初始化为x,并进行AddRoundKey操作,将RoundKey与State异或。l?对前Nr-1轮中的每一轮,用S盒对进行一次代换操作,称为SubBytes;对State做一置换ShiftRows;再对State做一次操作MixColumns;然后进行AddRoundKey操作。l?依次进行SubBytes、ShiftRows和AddRoundKey操作。l?将State定义为密文y。1.2 伪代码Cipher byte in[4*Nb], byte out[4*Nb], word w[Nb* Nr+1 ] beginbyte state[4,Nb]state inAddRoundKey state, w[0, Nb-1] for round 1 step 1 to Nr-1SubBytes state ShiftRows state MixColumns state AddRoundKey state, w[round*Nb, round+1 *Nb-1] end forSubBytes state ShiftRows state AddRoundKey state, w[Nr*Nb, Nr+1 *Nb-1] out stateend2 KeyExpansion 实现2.1要求将128 bit的密钥扩展至加密过程中的9轮循环,再上初始及最后2轮,需构造11轮密钥。每一轮密钥由4个字组成。每个字由4个byte组成。2.2 算法设计输入:byte[] key, byte[] w //key为密钥 w为扩展的密钥输出:byte[] w //扩展密钥 长度为4 * 4 * 11处理:?1)建立一个4 byte的一维数组,存放一个字。Byte[] temp;?2)将密钥key[0..15]送至w[0..15];//已赋值4个字给w。?3 for I 4 to 43??//以下每次处理一个字 32 bit ??temp w[I-1];??if I 0 mod 4 //处理一个字 then???for j 1 to 4 //字的4 byte处理在此循环中取temp数组下标的次序为1,2,3,0 //RotWord 操作 如果是字的首byte,取Rcon常数Rcon I/4 ; temp[j] Sbox temp[ j + 1 /4]^Rcon常数 end for???temp SubWord RotWord temp ⊕Rcon[i/4] end if??w[I] w[I-4]⊕temp; end for?4 输出w3多项式乘法mod GF 28 运算3.1要求将两个byte在有限域GF 28 按多项式乘法,并mod 不可约多项式m x x8+x4+x3+x+1。3.2 算法设计输入:byte a ,byte b输出:byte r数学基础:?GF 28 有限域性质:两个元素的加法与两个字节按位模2加是一致的;乘法满足结合律;?考虑多项式中的一项aixi(i0-7),用一次x乘以多项式:??b x b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x + b0,?得到??b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x? 式1 ?将结果模m x 求余得到x*b x 。如果b7 0,则式1就是x*b x 。如果b7 不等于0,则必须从式1中减去m x 后结果为x*b x 。用x乘一个多项式简称x乘。由此得出,aixi 乘以b x ,可以作i次x乘。x 十六进制表示为0x02 乘可以用字节内左移一位和紧接着的一个与0x1b的按位模2加来实现,该运算暂记为xtime 。X的更高次的乘法可以通过重复应用xtime 来实现。通过将中间结果相加,任意乘法都可以利用xtime 来实现。例如:57 * 13 fe ,这是因为:??57 * 02 xtime 57 ae??57 * 04 xtime ae 47??57 * 08 xtime 47 8e??57 * 10 xtime 8e 07所以??57 * 13 57 * 01⊕ 02 ⊕10 57⊕ ae⊕ 07 fe?
4 Sbox生成4.1要求一个字节byte看作为一个在有限域GF 28 的多项式,求出它关于模m x 的乘法逆,之后将该乘法逆在GF 2 上作仿
文档评论(0)