- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 DES加密算法
用C语言编写DES算法代码,代码如下:
#include stdio.h
#include string.h
//明文IP置换坐标
int DataIP[] = {58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7};
char preData[8]; //用户输入的明文
char preKey[8]; //用户输入的密钥
int Data64[64]; //8个明文通过十进制转二进制得到的64bit明文
int Key64[64]; //8个密钥通过十进制转二进制得到的64bit密钥
int DataTemp[64]; //Data64[]通过IP置换得到的64bit明文,用于得到L0和R0
int L0[32],R0[32];
int flagDorK=0; //标志位,如果是1的时候表示明文,是0的时候表示密文
//此段全局变量服务于段雪琦所写所用函数
//PC_1置换坐标表
int PC_1[56] = {57,49,41,33,25,17,9,
1,58,50,42,34,26,18,
10,2,59,51,43,35,27,
19,11,3,60,52,44,36,
63,55,47,39,31,23,15,
7,62,54,46,38,30,22,
14,6,61,53,45,37,29,
21,13,5,28,20,12,4};
//PC_2置换坐标表
int PC_2[48] = {14,17,11,24,1,5,
3,28,15,6,21,10,
23,19,12,4,26,8,
16,7,27,20,13,2,
41,52,31,37,47,55,
30,40,51,45,33,48,
44,49,39,56,34,53,
46,42,50,36,29,32};
//迭代左移位数数组
int lsi[16]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1};
//逆初始置换表IP^-1
int IP_1_Table[64] = {39,7,47,15,55,23,63,31,
38,6,46,14,54,22,62,30,
37,5,45,13,53,21,61,29,
36,4,44,12,52,20,60,28,
35,3,43,11,51,19,59,27,
34,2,42,10,50,18,58,26,
33,1,41,9,49,17,57,25,
32,0,40,8,48,16,56,24};
int KeyOutBox[48]={0}; //输出的子密钥数组
int lsinumber=0; //用于记录是第i次加密,lsinumber等于i
//sherry第二个函数所用
//f操作中将R0扩展为48位的置换坐标表
int fExpand48[48] = {32,1,2,3,4,5,
4,5,6,7,8,9,
8,9,10,11,12,13,
12,13,14,15,16,17,
16,17,18,19,20,21,
20,21,22,23,24,25,
24,25,26,27,28,29,
28,29,30,31,32,31};
//P变换置换坐标表
int fPChange[32]={16,7,20,21,
29,12,28,17,
文档评论(0)