des_ecb.h

来自「DES密码体制的安全性应该不依赖于算法的保密」· C头文件 代码 · 共 68 行

H
68
字号
/* lib/des/des.h */
/* Copyright (C) 1995-1996 Eric Young (eay@mincom.oz.au)
 * All rights reserved.
 *
 */

#ifndef HEADER_DES_H
#define HEADER_DES_H

#ifdef  __cplusplus
extern "C" {
#endif

/* must be 32bit quantity */
#define DES_LONG unsigned long

typedef unsigned char des_cblock[8];
typedef struct des_ks_struct
{
	union tagKS
	{
		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[16];

#define DES_KEY_SZ 	(sizeof(des_cblock))
#define DES_SCHEDULE_SZ (sizeof(des_key_schedule))

#define DES_ENCRYPT	1
#define DES_DECRYPT	0

#define DES_CBC_MODE	0
#define DES_PCBC_MODE	1

extern int des_check_key;	/* defaults to false */

char *des_options(void);
void des_ecb_encrypt(des_cblock *, des_cblock *, des_key_schedule, int);
void des_encrypt(DES_LONG *, des_key_schedule, int);

void des_encrypt2(DES_LONG *, des_key_schedule, int);
void des_encrypt3(DES_LONG *data, des_key_schedule ks1,
	des_key_schedule ks2, des_key_schedule ks3);
void des_decrypt3(DES_LONG *data, des_key_schedule ks1,
	des_key_schedule ks2, des_key_schedule ks3);
void des_cbc_encrypt3(const unsigned char *input, unsigned char *output, 
			  long length, des_key_schedule ks1, des_key_schedule ks2,
			  des_key_schedule ks3, des_cblock *ivec, int enc);
void des_ecb_encrypt3(des_cblock *input, des_cblock *output,
	     des_key_schedule ks1, des_key_schedule ks2, des_key_schedule ks3,
	     int enc);

void des_set_odd_parity(des_cblock *);
int des_is_weak_key(des_cblock *);
int des_set_key(des_cblock *, des_key_schedule);
int des_key_sched(des_cblock *, des_key_schedule);

#ifdef  __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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