⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 des1.h

📁 基于msp430优化的3des算法
💻 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 + -