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

📄 des.h

📁 一个C++的DES算法源码.引入工程中即可使用
💻 H
字号:
# if ! defined(AFX_DESPROCESS_H__6FD6DF17_CFC4_415A_B247_6209049569BA__INCLUDED_)
# define AFX_DESPROCESS_H__6FD6DF17_CFC4_415A_B247_6209049569BA__INCLUDED_

# if _MSC_VER > 1000
# pragma once
# endif // _MSC_VER > 1000

# define maxlen 60000


#define DES_LONG unsigned long
#define PERM_OP(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\	(b)^=(t),\	(a)^=((t)<<(n)))#define HPERM_OP(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\	(a)=(a)^(t)^(t>>(16-(n))))static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};#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 n2l(c,l)	(l =((DES_LONG)(*((c)++)))<<24L, \			 l|=((DES_LONG)(*((c)++)))<<16L, \			 l|=((DES_LONG)(*((c)++)))<< 8L, \			 l|=((DES_LONG)(*((c)++))))#define l2n(l,c)	(*((c)++)=(unsigned char)(((l)>>24L)&0xff), \			 *((c)++)=(unsigned char)(((l)>>16L)&0xff), \			 *((c)++)=(unsigned char)(((l)>> 8L)&0xff), \			 *((c)++)=(unsigned char)(((l)     )&0xff))#define l2cn(l1,l2,c,n)	{ \			c+=n; \			switch (n) { \			case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \			case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \			case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \			case 5: *(--(c))=(unsigned char)(((l2)     )&0xff); \			case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \			case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \			case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \			case 1: *(--(c))=(unsigned char)(((l1)     )&0xff); \				} \			}#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])];#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); \	}typedef unsigned char des_cblock[8];typedef struct des_ks_struct	{		union
		{		    DES_LONG pad[2];		} ks;	} des_key_schedule[16];int  des_set_key(des_cblock *,des_key_schedule );void des_encrypt(DES_LONG *,des_key_schedule , int);void des_ecb_encrypt(des_cblock *,des_cblock *,des_key_schedule ,int );void DES(char *,char *,char *);void _DES(char *,char *,char *);
#endif //! defined(AFX_DESPROCESS_H__6FD6DF17_CFC4_415A_B247_6209049569BA__INCLUDED_)

⌨️ 快捷键说明

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