AES加密算法c语言实现代码资料下载.pdf
- 文档编号:16086434
- 上传时间:2022-11-19
- 格式:PDF
- 页数:7
- 大小:64.70KB
AES加密算法c语言实现代码资料下载.pdf
《AES加密算法c语言实现代码资料下载.pdf》由会员分享,可在线阅读,更多相关《AES加密算法c语言实现代码资料下载.pdf(7页珍藏版)》请在冰豆网上搜索。
/*置换选择1*/intPC_156=56,48,40,32,24,16,8,0,57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,60,52,44,36,28,20,12,4,27,19,11,3;
/*置换选择2*/intPC_248=13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,46,43,48,38,55,33,52,45,41,49,35,28,31;
/*对左移次数的规定*/intMOVE_TIMES16=1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1;
intByteToBit(ElemTypech,ElemTypebit8);
intBitToByte(ElemTypebit8,ElemType*ch);
intChar8ToBit64(ElemTypech8,ElemTypebit64);
intBit64ToChar8(ElemTypebit64,ElemTypech8);
intDES_MakeSubKeys(ElemTypekey64,ElemTypesubKeys1648);
intDES_PC1_Transform(ElemTypekey64,ElemTypetempbts56);
intDES_PC2_Transform(ElemTypekey56,ElemTypetempbts48);
intDES_ROL(ElemTypedata56,inttime);
intDES_IP_Transform(ElemTypedata64);
intDES_IP_1_Transform(ElemTypedata64);
intDES_E_Transform(ElemTypedata48);
intDES_P_Transform(ElemTypedata32);
intDES_SBOX(ElemTypedata48);
intDES_XOR(ElemTypeR48,ElemTypeL48,intcount);
intDES_Swap(ElemTypeleft32,ElemTyperight32);
intDES_EncryptBlock(ElemTypeplainBlock8,ElemTypesubKeys1648,ElemTypecipherBlock8);
intDES_DecryptBlock(ElemTypecipherBlock8,ElemTypesubKeys1648,ElemTypeplainBlock8);
intDES_Encrypt(char*plainFile,char*keyStr,char*cipherFile);
intDES_Decrypt(char*cipherFile,char*keyStr,char*plainFile);
/*字节转换成二进制*/intByteToBit(ElemTypech,ElemTypebit8)intcnt;
for(cnt=0;
cntcnt)&
1;
return0;
/*二进制转换成字节*/intBitToByte(ElemTypebit8,ElemType*ch)intcnt;
cnt8;
cnt+)*ch|=*(bit+cnt)cnt;
/*将长度为8的字符串转为二进制位串*/intChar8ToBit64(ElemTypech8,ElemTypebit64)第2页AES加密算法c语言实现代码intcnt;
cnt+)ByteToBit(*(ch+cnt),bit+(cnt3);
/*将二进制位串转为长度为8的字符串*/intBit64ToChar8(ElemTypebit64,ElemTypech8)intcnt;
memset(ch,0,8);
cnt+)BitToByte(bit+(cnt3),ch+cnt);
/*生成子密钥*/intDES_MakeSubKeys(ElemTypekey64,ElemTypesubKeys1648)ElemTypetemp56;
intcnt;
DES_PC1_Transform(key,temp);
/*PC1置换*/for(cnt=0;
cnt16;
cnt+)/*16轮跌代,产生16个子密钥*/DES_ROL(temp,MOVE_TIMEScnt);
/*循环左移*/DES_PC2_Transform(temp,subKeyscnt);
/*PC2置换,产生子密钥*/return0;
/*密钥置换1*/intDES_PC1_Transform(ElemTypekey64,ElemTypetempbts56)intcnt;
cnt56;
cnt+)tempbtscnt=keyPC_1cnt;
/*密钥置换2*/intDES_PC2_Transform(ElemTypekey56,ElemTypetempbts48)intcnt;
cnt48;
cnt+)tempbtscnt=keyPC_2cnt;
/*循环左移*/intDES_ROL(ElemTypedata56,inttime)ElemTypetemp56;
/*保存将要循环移动到右边的位*/memcpy(temp,data,time);
memcpy(temp+time,data+28,time);
/*前28位移动*/memcpy(data,data+time,28-time);
memcpy(data+28-time,temp,time);
/*后28位移动*/memcpy(data+28,data+28+time,28-time);
memcpy(data+56-time,temp+time,time);
/*IP置换*/intDES_IP_Transform(ElemTypedata64)intcnt;
ElemTypetemp64;
cnt64;
cnt+)tempcnt=dataIP_Tablecnt;
memcpy(data,temp,64);
第3页AES加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AES 加密算法 语言 实现 代码