AES加密算法实现流程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AES加密算法实现流程.doc

由于AES的数学原理在网上有很多,所以在这里就不再说明,主要是加密流程。 先说明一下AES的几个必备参数的初始化 typedef struct _AES{ ??int??Nb;???????????????? //明文或密文的行数 ? int??Nr;???????????????? //加密或解密时的轮数 ? int??Nk;???????????????? //密钥的行数?????? ? unsigned long?? *Word;? //指向密钥库的指针 ? unsigned long?? *State;? //指向每一轮加密或解后的结果 }AES; 这里统一为4列n行,可以用unsigned long数组表示。 Nb = 明文或密文长度/4 ;Nk = 密钥长度/4;加密轮数Nr = Nb Nk ? Nk:Nb+6; ? 一.密钥库的生成过程 ? 1.计算库的行数并分配内存 ??? 库行数? = Nb*(Nr+1); ? 2.初始化密钥库 ??? 库的第一个密钥为原密钥---直接将密钥拷贝到密钥库中; ? 3.开始计算轮密钥 ??? unsigned long temp; ??? for (int c = Nk; c Nb * (Nr+1); ++c) ??? { ?????? //把上一轮的最后一行放入temp ?????? temp = w[c-1]; ?????? //判断是不是每一轮密钥的第一行 ?????? if (c % Nk == 0)? ?????? { ????????? //左旋8位 ????????? temp = (temp8)|(temp24); ????????? //查Sbox表 ????????? SubWord((byte*)temp); ??????????temp ^= Rcon[c/Nk]; ????????} ??????? else if ( Nk 6 (c % Nk == 4) )? ??????? { ??????????SubWord((byte*)temp); ??????? } ??????? //w[c-Nk] 为上一轮密钥的第一行 ??????? w[c] = w[c-Nk] ^ temp; ?????? } ? 二.State生成 ?? 为了实现快速列混淆(这里应该是行混淆),State需要多出三行作为缓冲区。 ?? 所以State = new unsigned long[Nb+3]; ???当解密时State += 3;加密时不变。 AES算法中行混淆的实现: ???加密时第1,2,3列(从0开始)分别上旋(解密时下旋)1,2,3个字节。 ?? 先拷贝前三行到State的最后三行(就是拷贝到多出来的那三行)。 ?? 设temp(unsigned char temp[4])为行混淆后第n行的数据。 ?? 设Nb = 4,那么加密时的逻辑结构为:(空白为无效数据) ???? 拷贝前:??????????????拷贝后:?????????????? 处理完后的结果: ??????c0?? c1?? c2?? c3?? c0?? c1?? c2?? c3???? c0?? c1?? c2?? c3 --------------------- --------------------- --------------------- | s0 | s1 | s2 | s3 | | s0 |?? ?|?? ?|?? ?| | t0 | t5 | ta | tf | --------------------- --------------------- --------------------- | s4 | s5 | s6 | s7 | | s4 | s5 |?? ?|?? ?| | t4 | t9 | te | t3 | --------------------- --------------------- --------------------- | s8 | s9 | sa | sb | | s8 | s9 | sa |?? ?| | t8 | td | t2 | t7 | --------------------- --------------------- --------------------- | sc | sd | se | sf | | sc | sd | se | sf | | tc | t1 | t6 | tb | ---------------------?--------------------- --------------------- |?? ?|?? ?|?? ?|?? ?|?|?? ?| s1 | s2 | s3 | |??

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档