- 3
- 0
- 约 22页
- 2016-11-17 发布于湖北
- 举报
实验二 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)