📄 des.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 + -