📄 des1.h
字号:
int __low_level_init(void)
{
/* Insert your low-level initializations here */
/*==================================*/
/* Choose if segment initialization */
/* should be done or not. */
/* Return: 0 to omit seg_init */
/* 1 to run seg_init */
/*==================================*/
return (0);
}
typedef unsigned char byte;
typedef unsigned int word;
#define SetBit(Reg, Bit) (Reg |= Bit) //置位
#define ClrBit(Reg, Bit) (Reg &= ~Bit) //复位
#define HoldBit(Reg, Bit) (Reg &= Bit) //保留位
#define TestBit(Reg, Bit) (Reg & Bit) //位测试
#define TogBit(Reg, Bit) (Reg ^= Bit) //位异或,
//unsigned short *sptr; // Stack pointer
word *sptr; // Stack pointer
extern void getsptr (void); // Get Stack Pointer
extern void E_kuozh (void); // Get Stack Pointer
extern void L_shift (void); // Get Stack Pointer
extern void S_Box_A (void); // Get Stack Pointer
byte KEY[8];
byte C_jicun[4];
byte D_jicun[4];
byte R_jicun[4];
byte L_jicun[4];
byte ls1[8];
byte ls2[8];
byte lun; //标明目前轮次
const byte DesIP_A[8]= //IP置换,使用运算规律
{1, 3, 5, 7, 0, 2, 4, 6
};
const byte DesIP_1_A[8]= //IP_1置换,使用运算规律
{4, 0, 5, 1, 6, 2, 7, 3
};
const byte bittype[8]= //位对应表
{0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
};
const byte Rotable[16]= //循环左移次数/轮/分
{
1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
};
const byte Rotable_A[16]= //循环左移次数/轮
{
1, 2, 4, 6, 8,10,12,14,15,17,19,21,23,25,27,28
};
const byte CDKey[48]= //C\D寄存器合并产生子密钥
{
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,47,
43,48,38,55,33,52,
45,41,49,35,28,31
};
const byte DesP[32]= //P置换表
{
15, 6,19,20,28,11,27,16,
0,14,22,25, 4,17,30, 9,
1, 7,23,13,31,26, 2, 8,
18,12,29, 5,21,10, 3,24
};
const byte S[8][4][16]=
{
14, 4,13, 1, 2,15,11, 8, 3,10, 6,12, 5, 9, 0, 7,
0,15, 7, 4,14, 2,13, 1,10, 6,12,11, 9, 5, 3, 8,
4, 1,14, 8,13, 6, 2,11,15,12, 9, 7, 3,10, 5, 0,
15,12, 8, 2, 4, 9, 1, 7, 5,11, 3,14,10, 0, 6,13,
15, 1, 8,14, 6,11, 3, 4, 9, 7, 2,13,12, 0, 5,10,
3,13, 4, 7,15, 2, 8,14,12, 0, 1,10, 6, 9,11, 5,
0,14, 7,11,10, 4,13, 1, 5, 8,12, 6, 9, 3, 2,15,
13, 8,10, 1, 3,15, 4, 2,11, 6, 7,12, 0, 5,14, 9,
10, 0, 9,14, 6, 3,15, 5, 1,13,12, 7,11, 4, 2, 8,
13, 7, 0, 9, 3, 4, 6,10, 2, 8, 5,14,12,11,15, 1,
13, 6, 4, 9, 8,15, 3, 0,11, 1, 2,12, 5, 10,14, 7,
1,10,13, 0, 6, 9, 8, 7, 4,15,14, 3,11, 5, 2,12,
7,13,14, 3, 0, 6, 9,10, 1, 2, 8, 5,11,12, 4,15,
13, 8,11, 5, 6,15, 0, 3, 4, 7, 2,12, 1,10,14, 9,
10, 6, 9, 0,12,11, 7,13,15, 1, 3,14, 5, 2, 8, 4,
3,15, 0, 6,10, 1,13, 8, 9, 4, 5,11,12, 7, 2,14,
2,12, 4, 1, 7,10,11, 6, 8, 5, 3,15,13, 0,14, 9,
14,11, 2,12, 4, 7,13, 1, 5, 0,15,10, 3, 9, 8, 6,
4, 2, 1,11,10,13, 7, 8,15, 9,12, 5, 6, 3, 0,14,
11, 8,12, 7, 1,14, 2,13, 6,15, 0, 9,10, 4, 5, 3,
12, 1,10,15, 9, 2, 6, 8, 0,13, 3, 4,14, 7, 5,11,
10,15, 4, 2, 7,12, 9, 5, 6, 1,13,14, 0,11, 3, 8,
9,14,15, 5, 2, 8,12, 3, 7, 0, 4,10, 1,13,11, 6,
4, 3, 2,12, 9, 5,15,10,11,14, 1, 7, 6, 0, 8,13,
4,11, 2,14,15, 0, 8,13, 3,12, 9, 7, 5,10, 6, 1,
13, 0,11, 7, 4, 9, 1,10,14, 3, 5,12, 2,15, 8, 6,
1, 4,11,13,12, 3, 7,14,10,15, 6, 8, 0, 5, 9, 2,
6,11,13, 8, 1, 4,10, 7, 9, 5, 0,15,14, 2, 3,12,
13, 2, 8, 4, 6,15,11, 1,10, 9, 3,14, 5, 0,12, 7,
1,15,13, 8,10, 3, 7, 4,12, 5, 6,11, 0,14, 9, 2,
7,11, 4, 1, 9,12,14, 2, 0, 6,10,13,15, 3, 5, 8,
2, 1,14, 7, 4,10, 8,13,15,12, 9, 0, 3, 5, 6,11
};
/*
;--------------------------------------------------------
DesIP DB 57,49,41,33,25,17,09,01; IP置换
DB 59,51,43,35,27,19,11,03;
DB 61,53,45,37,29,21,13,05;
DB 63,55,47,39,31,23,15,07;
DB 56,48,40,32,24,16,08,00;
DB 58,50,42,34,26,18,10,02;
DB 60,52,44,36,28,20,12,04;
DB 62,54,46,38,30,22,14,06;
DesIP_1 DB 39, 7,47,15,55,23,63,31; IP_1\置换
DB 38, 6,46,14,54,22,62,30;
DB 37, 5,45,13,53,21,61,29;
DB 36, 4,44,12,52,20,60,28;
DB 35, 3,43,11,51,19,59,27;
DB 34, 2,42,10,50,18,58,26;
DB 33, 1,41, 9,49,17,57,25;
DB 32, 0,40,08,48,16,56,24;
COfKey DB 56, 48, 40, 32, 24, 16, 8; 密钥分组C寄存器
DB 00, 57, 49, 41, 33, 25, 17;
DB 09, 1, 58, 50, 42, 34, 26;
DB 18, 10, 2, 59, 51, 43, 35;
DOfKey DB 62, 54, 46, 38, 30, 22, 14; 密钥分组D寄存器
DB 06, 61, 53, 45, 37, 29, 21;
DB 13, 5, 60, 52, 44, 36, 28
DB 20, 12, 4, 27, 19, 11, 3;
Rotable DB 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1; 循环左移次数/轮
CPKey DB 13,16,10,23, 0, 4; C\D寄存器合并产生子密钥
DB 2,27, 4, 5,20,09;
DB 22,18,11, 3,25, 7;
DB 15, 6,26,19,12, 1;
DB 40,51,30,36,46,54;
DB 29,39,50,44,32,47;
DB 43,48,38,55,33,52;
DB 45,41,49,35,28,31;
S8_0 DB 14, 4, 3, 1, 2,15,11, 8, 3,10, 6,12, 5, 9, 0, 7; S盒,共8个
DB 00,15, 7, 4,14, 2,13, 1,10, 6,12,11, 9, 5, 3, 8;
DB 04, 1,14, 8,13, 6, 2,11,15,12, 9, 7, 3,10, 5, 0;
DB 15,12, 8, 2, 4, 9, 1, 7, 5,11, 3,14,10, 0, 6,13;
S8_1 DB 15, 1, 8,14, 6,11, 3, 4, 9, 7, 2,13,12, 0, 5,10;
DB 03,13, 4, 7,15, 2, 8,14,12, 0, 1,10, 6, 9,11, 5;
DB 00,14, 7,11,10, 4,13, 1, 5, 8,12, 6, 9, 3, 2,15;
DB 13, 8,10, 1, 3,15, 4, 2,11, 6, 7,12, 0, 5,14, 9;
S8_2 DB 10, 0, 9,14, 6, 3,15, 5, 1,13,12, 7,11, 4, 2, 8;
DB 13, 7, 0, 9, 3, 4, 6,10, 2, 8, 5,14,12,11,15, 1;
DB 13, 6, 4, 9, 8,15, 3, 0,11, 1, 2,12, 5,10,14, 7;
DB 01,10,13, 0, 6, 9, 8, 7, 4,15,14, 3,11, 5, 2,12;
S8_3 DB 7,13,14, 3, 0, 6, 9,10, 1, 2, 8, 5,11,12, 4,15;
DB 13, 8,11, 5, 6,15, 0, 3, 4, 7, 2,12, 1,10,14, 9;
DB 10, 6, 9, 0,12,11, 7,13,15, 1, 3,14, 5, 2, 8, 4;
DB 03,15, 0, 6,10, 1,13, 8, 9, 4, 5,11,12, 7, 2,14;
S8_4 DB 2,12, 4, 1, 7,10,11, 6, 8, 5, 3,15,13, 0,14, 9;
DB 14,11, 2,12, 4, 7,13, 1, 5, 0,15,10, 3, 9, 8, 6;
DB 4, 2, 1,11,10,13, 7, 8,15, 9,12, 5, 6, 3, 0,14;
DB 11, 8,12, 7, 1,14, 2,13, 6,15, 0, 9,10, 4, 5, 3;
S8_5 DB 12, 1,10,15, 9, 2, 6, 8, 0,13, 3, 4,14, 7, 5,11;
DB 10,15, 4, 2, 7,12, 9, 5, 6, 1,13,14, 0,11, 3, 8;
DB 9,14,15, 5, 2, 8,12, 3, 7, 0, 4,10, 1,13,11, 6;
DB 4, 3, 2,12, 9, 5,15,10,11,14, 1, 7, 6, 0, 8,13;
S8_6 DB 4,11, 2,14,15, 0, 8,13, 3,12, 9, 7, 5,10, 6, 1;
DB 13, 0,11, 7, 4, 9, 1,10,14, 3, 5,12, 2,15, 8, 6;
DB 1, 4,11,13,12, 3, 7,14,10,15, 6, 8, 0, 5, 9, 2;
DB 6,11,13, 8, 1, 4,10, 7, 9, 5, 0,15,14, 2, 3,12;
S8_7 DB 13, 2, 8, 4, 6,15,11, 1,10, 9, 3,14, 5, 0,12, 7;
DB 1,15,13, 8,10, 3, 7, 4,12, 5, 6,11, 0,14, 9, 2;
DB 7,11, 4, 1, 9,12,14, 2, 0, 6,10,13,15, 3, 5, 8;
DB 2, 1,14, 7, 4,10, 8,13,15,12, 9, 0, 3, 5, 6,11;
DesP32 DB 15, 6,19,20,28,11,27,16; P置换表
DB 00,14,22,25, 4,17,30,09;
DB 01, 7,23,13,31,26, 2, 8;
DB 18,12,29, 5,21,10, 3,24;
;---------------------------------------------------------------------------
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -