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

📄 arithzxz.h.bak

📁 DES,MD5,ZLIB算法源代码
💻 BAK
字号:
/////////////////////////////////////////////////////////////////////////////
//Discription:  压缩和加密公共函数
//Written By:   ZHANGXIANZHU
//Date:         2001-09-12
//Version:      1.0

//Modified by:
//Modified Date:
//Version:
//
////////////////////////////////////////////////////////////////////////////

#ifndef _VCZXZ_H__
#define _VCZXZ_H__


/////////////////////////////////////////////////////////////////////////////
//名称:		GetKey
//功能:  	生成DES加密KEY
//算法:		字符串sz初始为 0x0000000000000000
//			循环n次sz对sz做DES加密
//参数:		n:	循环次数
//返回:		8字节Key值
//
//
/////////////////////////////////////////////////////////////////////////////
unsigned char * GeyKey(int n);


/////////////////////////////////////////////////////////////////////////////
//名称:		DES
//功能:  	做DES加解密
//参数:		source:	原字符串(8字节)
//			dest:	目的字符串(8字节)
//			key:	加解密钥匙(8字节)
//			flag:	'E'或'e' 时加密
//					'D'或'd' 时解密
//返回:
//
//
/////////////////////////////////////////////////////////////////////////////
void Des(unsigned char *source, unsigned char *dest,
         unsigned char *key, unsigned char flag);


/////////////////////////////////////////////////////////////////////////////
//名称:		DesMac
//功能:  	用DES做MAC校验
//算法:		每8位循环异或,DES,异或, 不够8位时用0x00填充
//参数:		source:	原字符串
//			iLen:	原字符串长度
//			dest:	目的字符串(8字节)
//			key:	加密钥匙(8字节)
//返回:
//
//
/////////////////////////////////////////////////////////////////////////////
void DesMac(unsigned char *source, int iLen,
            unsigned char *dest, unsigned char *key);


/////////////////////////////////////////////////////////////////////////////
//名称:		Do_XOR
//功能:  	异或操作,目的字符串 = 目的字符串和原字符串的异或
//参数:		dest:	目的字符串
//			source:	原字符串
//			size:	长度
//返回:
//
//
/////////////////////////////////////////////////////////////////////////////
void Do_XOR(unsigned char *dest, unsigned char *source, int size);

/////////////////////////////////////////////////////////////////////////////
//名称:		HEX_2_DSP
//功能:  	把BCD码串变成数字串(十六进制)
//参数:		hex:	原字符串
//			dsp:	目的字符串
//			count:	原字符串长度
//返回:
//
//
/////////////////////////////////////////////////////////////////////////////
void HEX_2_DSP(unsigned char *hex, unsigned char *dsp, int count);

/////////////////////////////////////////////////////////////////////////////
//名称:		DSP_2_HEX
//功能:  	把十六进制字符串变成BCD码
//参数:		dsp:	原字符串
//			hex:	目的字符串
//			count:	原字符串长度/2=目的字符串长度
//返回:
//
//
/////////////////////////////////////////////////////////////////////////////
void DSP_2_HEX(unsigned char *dsp, unsigned char *hex, int count);

/////////////////////////////////////////////////////////////////////////////
//名称:		alder32
//功能:  	32位校验和
//参数:		adler:	输入校验和
//			buf:	字符串
//			len:	字符串长度
//返回:		校验和值
//
//
/////////////////////////////////////////////////////////////////////////////
unsigned long adler32(unsigned long adler, const BYTE *buf, unsigned int len);


/////////////////////////////////////////////////////////////////////////////
//名称:		compress
//功能:  	压缩字符串,采用zlib、deflate格式压缩
//算法: 	RFC1950 (zlib format)
//	     	RFC1951 (deflate format)
//参数:		dest:	目的字符串
//			destLen:目的字符串长度,应输入目的字符串最大长度
//					压缩成功返回时,是压缩结果长度	
//			source:	原字符串
//			sourceLen:	原字符串长度
//返回:  	成功=0
//	 		失败 <0 
//	  		-4: 内存不够
//	  		-5: destLen 太小,调用时destlen要指出dest的长度
/////////////////////////////////////////////////////////////////////////////
int compress (BYTE *dest, unsigned long *destLen, const BYTE *source, unsigned long sourceLen);

/////////////////////////////////////////////////////////////////////////////
//名称:		uncompress
//功能:  	解压缩字符串,采用zlib、deflate格式压缩
//算法: 	RFC1950 (zlib format)
//	     	RFC1951 (deflate format)
//参数:		dest:	目的字符串
//			destLen:目的字符串长度,应输入目的字符串最大长度
//					解压缩成功返回时,是解压缩结果长度	
//			source:	原字符串
//			sourceLen:	原字符串长度
//返回:  	成功=0
//		 	失败 <0 
//	  		-4: 内存不够
//	  		-5: destLen 太小,调用时destlen要指出dest的长度
/////////////////////////////////////////////////////////////////////////////
int uncompress (BYTE *dest, unsigned long *destLen, const BYTE *source, unsigned long sourceLen);


/////////////////////////////////////////////////////////////////////////////
//名称:		CRC16
//功能:  	16位CRC校验
//参数:		szBuf:	字符串
//			iLen:	字符串长度
//返回:  	CRC16值
//
//
//
/////////////////////////////////////////////////////////////////////////////
WORD CRC16(BYTE *szBuf, int iLen);


/////////////////////////////////////////////////////////////////////////////
//名称:		CRC32
//功能:  	32位CRC校验
//参数:		szBuf:	字符串
//			iLen:	字符串长度
//返回:  	CRC32值
//
//
//
/////////////////////////////////////////////////////////////////////////////
DWORD CRC32(BYTE *buf, int iLen);


/////////////////////////////////////////////////////////////////////////////
//名称:		KMPSearchMem
//功能:  	KMP匹配算法
//参数:		dad:	主字符串
//			ndad:	主字符串长度
//			sub:	匹配字符串
//			nsub:	匹配字符串长度(应<=512)
//返回:  	第一个匹配位置, 不匹配为-1
//
//
/////////////////////////////////////////////////////////////////////////////
int KMPSearchMem(char *dad, int ndad, char *sub, int nsub);


/////////////////////////////////////////////////////////////////////////////
//名称:		CheckExeFile
//功能:  	检查执行文件是否被其他程序修改
//参数:		szFileName:	文件名
//			szMutex:	互斥变量名,为NULL时,执行文件不产生互斥,
//			不为NULL时,执行文件只能有一个运行程序。
//返回:  	0	正常
//			<0  不正常
//
//
/////////////////////////////////////////////////////////////////////////////
int CheckExeFile(char *szFileName, char *szMutex);


#endif /*_VCZXZ_H__*/

⌨️ 快捷键说明

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