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

📄 des.h

📁 DES( Data Encryption Standard)算法
💻 H
字号:
/*============================================================================*/
/*                                                                            */
/*                                                                            */
/*     NAME                                                                   */
/*          set_key.c                                                         */
/*                                                                            */
/*     REVISION HISTORY                                                       */
/*          This code is part of a library written by Eric Young (see below)  */
/*                                                                            */
/*     USAGE                                                                  */
/*          This file declares all of the subroutines used in this            */
/*			Data Encryption Standard (DES) package.                           */
/*                                                                            */
/*     DESCRIPTION                                                            */
/*          This file contains look-up tables used in "set_key.c"             */
/*                                                                            */
/*============================================================================*/




/*#ifdef TIC6x
	#define EXTRACT(x,l,r) _extu(x,l,r)
#else
	#define EXTRACT(x,l,r) (x << l) >> r
#endif
*/
#define DES_LONG unsigned int
typedef unsigned char des_cblock[8];

typedef struct des_ks_struct
	{
	union   {
		des_cblock _;
		/* make sure things are correct size on machines with
		 * 8 byte longs */
//		DES_LONG pad[2];
		} ks;
#undef _
#define _       ks._
	} des_key_schedule[17];   /*  should be 16, but added 1 pad. */ 
	
#define DES_KEY_SZ      (sizeof(des_cblock))

extern const DES_LONG des_SPtrans[8][64]; 


void des3_ecb_encrypt(des_cblock *inbuf1, des_key_schedule sch1[3], des_cblock *outbuf1, int);
void des3_ecb_decrypt(des_cblock *outbuf1, des_key_schedule sch1[3], des_cblock *outbuftst1, int);

void des_encrypt_core_3ch(DES_LONG *data1, des_key_schedule ks1, 
						  DES_LONG *data2, des_key_schedule ks2, 
						  DES_LONG *data3, des_key_schedule ks3);					 

void des3_encrypt_block_3ch(DES_LONG *data1, des_key_schedule ks1[3], 
							DES_LONG *data2, des_key_schedule ks2[3],
							DES_LONG *data3, des_key_schedule ks3[3]);

void des3_decrypt_block_3ch(DES_LONG *data1, des_key_schedule ks1[3], 
							DES_LONG *data2, des_key_schedule ks2[3],
							DES_LONG *data3, des_key_schedule ks3[3]);

void des3_cbc_encrypt_3ch(des_cblock *, des_cblock *, des_key_schedule*, des_cblock*,
						  des_cblock *, des_cblock *, des_key_schedule*, des_cblock*,
						  des_cblock *, des_cblock *, des_key_schedule*, des_cblock*,
						  int);

void des3_cbc_decrypt_3ch(des_cblock *, des_cblock *, des_key_schedule*, des_cblock*,
						  des_cblock *, des_cblock *, des_key_schedule*, des_cblock*,
						  des_cblock *, des_cblock *, des_key_schedule*, des_cblock*,
						  int);

void des_set_odd_parity(des_cblock *key);
int des_is_weak_key(des_cblock *key);
int des_set_key(des_cblock *key, volatile des_key_schedule schedule);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -