- 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加密算法实现流程.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 | |??
您可能关注的文档
- ()英语词性转换.doc
- (中黑小二)实时数据库在包.doc
- (二)时态.doc
- (人工)土方开挖分项工程质量管理.doc
- (创建模式)--抽象工厂.doc
- (动词时态)Verbtenses.ppt
- (复习)化合价与化学式.ppt
- (复杂)市场调研与需求测量.ppt
- (学生)问卷(二)媒体教学情况调查结果.doc
- (幼儿拼音)汉语拼音表与汉语拼音字母表读法.doc
- 2025浙江温州市公用事业发展集团有限公司面向高校招聘工作人考前自测高频考点模拟试题最新.docx
- 2025年蓬安县财政局下属单位招聘备考题库附答案.docx
- 广安市农业农村局2025年公开遴选市动物卫生监督所工作人员备考题库附答案.docx
- 南昌市劳动保障事务代理中心招聘3名劳务派遣驾驶员参考题库附答案.docx
- 2025浙江绍兴市新昌县机关事业单位招用编外聘用人员36人备考题库最新.docx
- 浙江国企招聘-2025嘉兴海盐县城市投资集团有限公司招聘7人笔试备考试题附答案.docx
- 长沙银行2026校园招聘备考题库最新.docx
- 2026年度中国地震局事业单位公开招聘备考题库附答案.docx
- 2025福建省晋江圳源环境科技有限责任公司招聘6人模拟试卷附答案.docx
- 浙江国企招聘-2025温州平阳县城发集团下属房开公司招聘5人公笔试备考试题附答案.docx
原创力文档


文档评论(0)