教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

AES加密解密C语言实现 - 图文(3)

来源:网络收集 时间:2026-07-12
导读: 37 38 39 40 41 42 43 44 45 46 47 48 { t[r] = state[r][c]; } for(r=0; r =0; i--) { InvShiftRows(state); InvSubBytes(state); AddRoundKey(state, w[i]); if(i)InvMixColumns(state); } for(r=0; r void* AES:

37 38 39 40 41 42 43 44 45 46 47 48 { t[r] = state[r][c]; } for(r=0; r<4; r++) { state[r][c] = FFmul(0x0e, t[r]) ^ FFmul(0x0b, t[(r+1)%4]) ^ FFmul(0x0d, t[(r+2)%4]) ^ FFmul(0x09, t[(r+3)%4]); } } } 加密过程 先将输入的明文按列序组合成4*4的矩阵,直接与第0组密钥(即输入的密钥)相加(异或),作为轮加密的输入 然后循环10次进行SubBytes、ShiftRows、MixColumns、AddRoundKey运算,最后恢复原序列 需要注意的是最后一轮并不进行MixColumns(列混淆变换) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 unsigned char* AES::Cipher(unsigned char* input) { unsigned char state[4][4]; int i,r,c; for(r=0; r<4; r++) { for(c=0; c<4 ;c++) { state[r][c] = input[c*4+r]; } } AddRoundKey(state,w[0]); for(i=1; i<=10; i++) { SubBytes(state); ShiftRows(state); if(i!=10)MixColumns(state); AddRoundKey(state,w[i]); } 23 24 25 26 27 28 29 30 31 32 33 for(r=0; r<4; r++) { for(c=0; c<4 ;c++) { input[c*4+r] = state[r][c]; } } return input; } 解密过程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 unsigned char* AES::InvCipher(unsigned char* input) { unsigned char state[4][4]; int i,r,c; for(r=0; r<4; r++) { for(c=0; c<4 ;c++) { state[r][c] = input[c*4+r]; } } AddRoundKey(state, w[10]); for(i=9; i>=0; i--) { InvShiftRows(state); InvSubBytes(state); AddRoundKey(state, w[i]); if(i)InvMixColumns(state); } for(r=0; r<4; r++) { for(c=0; c<4 ;c++) { input[c*4+r] = state[r][c]; 28 29 30 31 32 } } return input; } 对外部数据的加密/解密 至此已经实现了AES加密与解密的原型,在使用的时候一般处理的是字符串等,而不是直接传入128位的数据,所以要封装一下对外部数据的加解密处理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

void* AES::Cipher(void* input, int length) { unsigned char* in = (unsigned char*) input; int i; if(!length) { while(*(in+length++)); in = (unsigned char*) input; } for(i=0; i

加密时传进的指针要预留够16整数倍字节的空间,因为加密操作直接修改原数据,不足128位可能造成内存溢出

AES加密解密C语言实现 - 图文(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/447685.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)