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

📄 password.h

📁 abstract rtos
💻 H
字号:
#ifdef __cplusplus#if __cplusplusextern "C"{#endif #endif #ifndef __INC_PASSWORD_H__#define __INC_PASSWORD_H__#ifndef DES_PTR#undef DES_PTR#endif#define	ROTATE(a,n)	(((a)>>(n))+((a)<<(32-(n))))typedef unsigned char des_cblock[8];typedef struct des_ks_struct	{	union	{		des_cblock _;		DES_LONG pad[2];		} ks;#undef _#define _	ks._	} des_key_schedule[16];#define c2l(c,l)	(l =((DES_LONG)(*((c)++)))    , \			 l|=((DES_LONG)(*((c)++)))<< 8L, \			 l|=((DES_LONG)(*((c)++)))<<16L, \			 l|=((DES_LONG)(*((c)++)))<<24L)#define c2ln(c,l1,l2,n)	{ \			c+=n; \			l1=l2=0; \			switch (n) { \			case 8: l2 =((DES_LONG)(*(--(c))))<<24L; \			case 7: l2|=((DES_LONG)(*(--(c))))<<16L; \			case 6: l2|=((DES_LONG)(*(--(c))))<< 8L; \			case 5: l2|=((DES_LONG)(*(--(c))));     \			case 4: l1 =((DES_LONG)(*(--(c))))<<24L; \			case 3: l1|=((DES_LONG)(*(--(c))))<<16L; \			case 2: l1|=((DES_LONG)(*(--(c))))<< 8L; \			case 1: l1|=((DES_LONG)(*(--(c))));     \				} \			}#define l2c(l,c)	(*((c)++)=(unsigned char)(((l)     )&0xff), \			 *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \			 *((c)++)=(unsigned char)(((l)>>16L)&0xff), \			 *((c)++)=(unsigned char)(((l)>>24L)&0xff))#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\	(b)^=(t),\	(a)^=((t)<<(n)))#define IP(l,r) \	{ \	register DES_LONG tt; \	PERM_OP(r,l,tt, 4,0x0f0f0f0fL); \	PERM_OP(l,r,tt,16,0x0000ffffL); \	PERM_OP(r,l,tt, 2,0x33333333L); \	PERM_OP(l,r,tt, 8,0x00ff00ffL); \	PERM_OP(r,l,tt, 1,0x55555555L); \	}#define FP(l,r) \	{ \	register DES_LONG tt; \	PERM_OP(l,r,tt, 1,0x55555555L); \	PERM_OP(r,l,tt, 8,0x00ff00ffL); \	PERM_OP(l,r,tt, 2,0x33333333L); \	PERM_OP(r,l,tt,16,0x0000ffffL); \	PERM_OP(l,r,tt, 4,0x0f0f0f0fL); \	}#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\	(a)=(a)^(t)^(t>>(16-(n))))	#ifdef DES_PTR#define D_ENCRYPT(L,R,S) { \	u=((R^s[S  ])<<2);	\	t= R^s[S+1]; \	t=ROTATE(t,2); \	L^= (\	*(DES_LONG *)((unsigned char *)des_SP+0x100+((t    )&0xfc))+ \	*(DES_LONG *)((unsigned char *)des_SP+0x300+((t>> 8)&0xfc))+ \	*(DES_LONG *)((unsigned char *)des_SP+0x500+((t>>16)&0xfc))+ \	*(DES_LONG *)((unsigned char *)des_SP+0x700+((t>>24)&0xfc))+ \	*(DES_LONG *)((unsigned char *)des_SP      +((u    )&0xfc))+ \	*(DES_LONG *)((unsigned char *)des_SP+0x200+((u>> 8)&0xfc))+ \	*(DES_LONG *)((unsigned char *)des_SP+0x400+((u>>16)&0xfc))+ \	*(DES_LONG *)((unsigned char *)des_SP+0x600+((u>>24)&0xfc))); }#else #ifdef undef#define D_ENCRYPT(L,R,S)	\	U.l=R^s[S+1]; \	T.s[0]=((U.s[0]>>4)|(U.s[1]<<12))&0x3f3f; \	T.s[1]=((U.s[1]>>4)|(U.s[0]<<12))&0x3f3f; \	U.l=(R^s[S  ])&0x3f3f3f3fL; \	L^=	des_SPtrans[1][(T.c[0])]| \		des_SPtrans[3][(T.c[1])]| \		des_SPtrans[5][(T.c[2])]| \		des_SPtrans[7][(T.c[3])]| \		des_SPtrans[0][(U.c[0])]| \		des_SPtrans[2][(U.c[1])]| \		des_SPtrans[4][(U.c[2])]| \		des_SPtrans[6][(U.c[3])];#else#define D_ENCRYPT(Q,R,S) {\	u=(R^s[S  ]); \	t=R^s[S+1]; \	t=ROTATE(t,4); \	Q^=	des_SPtrans[1][(t     )&0x3f]| \		des_SPtrans[3][(t>> 8L)&0x3f]| \		des_SPtrans[5][(t>>16L)&0x3f]| \		des_SPtrans[7][(t>>24L)&0x3f]| \		des_SPtrans[0][(u     )&0x3f]| \		des_SPtrans[2][(u>> 8L)&0x3f]| \		des_SPtrans[4][(u>>16L)&0x3f]| \		des_SPtrans[6][(u>>24L)&0x3f]; }#endif#endif#define ITERATIONS 16#define HALF_ITERATIONS 8#define DES_KEY_SZ 	(sizeof(des_cblock))#define DES_ENCRYPT	1#define DES_DECRYPT	0extern U8 QuestionMarkToa( U8 ucChar );extern U8 aToQuestionMark( U8 ucChar );extern S32 AscToBin(U8 *uc_Bin, S32 i_BinLen, S8 *c_AscBuf, S32 i_AscLen);extern S32 BinToAsc(U8 *uc_Bin, S32 i_BinLen, S8 *c_AscBuf, S32 i_AscLen);int des_set_key(des_cblock *key,des_key_schedule schedule);int des_is_weak_key(des_cblock *key);void des_encrypt(DES_LONG *data,des_key_schedule ks, int enc);void des_ecb_encrypt(des_cblock *input,des_cblock *output,des_key_schedule ks,int enc);#endif#ifdef __cplusplus#if __cplusplus}#endif #endif 

⌨️ 快捷键说明

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