www.pudn.com > 17123337.rar > Vczip.h


///////////////////////////////////////////////////////////////////////////// 
//Discription:  压缩和加密公共函数 
//Written By:   ZHANGXIANZHU 
//Date:         2001-09-12 
//Version:      1.0 
 
//Modified by: 
//Modified Date: 
//Version: 
// 
//////////////////////////////////////////////////////////////////////////// 
 
#ifndef _VCZIP_H__ 
#define _VCZIP_H__ 
 
///////////////////////////////////////////////////////////////////////////// 
//名称:		DES 
//功能:  	做DES加解密 
//入口:		source:	原字符串(8字节) 
//			key:	加解密钥匙(8字节) 
//			flag:	'E'或'e' 时加密 
//					'D'或'd' 时解密 
//出口:	dest:	目的字符串(8字节) 
//返回: 
// 
///////////////////////////////////////////////////////////////////////////// 
void Des(unsigned char *source, unsigned char *dest, 
         unsigned char *key, unsigned char flag); 
 
 
///////////////////////////////////////////////////////////////////////////// 
//名称:		DesMac 
//功能:  	用DES做MAC校验 
//算法:		每8位循环异或,DES,异或, 不够8位时用0x00填充 
//入口:		source:	原字符串 
//			iLen:	原字符串长度 
//			key:	加密钥匙(8字节) 
//出口:	dest:	目的字符串(8字节) 
//返回: 
// 
// 
///////////////////////////////////////////////////////////////////////////// 
void DesMac(unsigned char *source, int iLen, 
            unsigned char *dest, unsigned char *key); 
 
 
///////////////////////////////////////////////////////////////////////////// 
//名称:		Do_XOR 
//功能:  	异或操作,目的字符串 = 目的字符串和原字符串的异或 
//入口:		dest:	目的字符串 
//			source:	原字符串 
//			size:	长度 
//出口:	dest:	目的字符串 
//返回: 
// 
///////////////////////////////////////////////////////////////////////////// 
void Do_XOR(unsigned char *dest, unsigned char *source, int size); 
 
///////////////////////////////////////////////////////////////////////////// 
//名称:		HEX_2_DSP 
//功能:  	把BCD码串变成数字串(十六进制) 
//入口:		hex:	原字符串 
//			count:	原字符串长度 
//出口:	dsp:	目的字符串 
//返回: 
// 
///////////////////////////////////////////////////////////////////////////// 
void HEX_2_DSP(unsigned char *hex, unsigned char *dsp, int count); 
 
///////////////////////////////////////////////////////////////////////////// 
//名称:		DSP_2_HEX 
//功能:  	把十六进制字符串变成BCD码 
//入口:		dsp:	原字符串 
//			count:	原字符串长度/2=目的字符串长度 
//出口:	hex:	目的字符串 
//返回: 
// 
// 
///////////////////////////////////////////////////////////////////////////// 
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); 
 
 
///////////////////////////////////////////////////////////////////////////// 
//名称:		CompressZ 
//功能:  	压缩字符串,采用zlib、deflate格式压缩 
//算法: 	RFC1950 (zlib format) 
//	     	RFC1951 (deflate format) 
//入口:		destLen:目的字符串长度,应输入目的字符串最大长度 
//					压缩成功返回时,是压缩结果长度	 
//			source:	原字符串 
//			sourceLen:	原字符串长度 
//出口:		dest:	目的字符串 
//			destLen:目的字符串长度,应输入目的字符串最大长度 
//返回:  	成功=0 
//	 		失败 <0  
//	  		-4: 内存不够 
//	  		-5: destLen 太小,调用时destlen要指出dest的长度 
///////////////////////////////////////////////////////////////////////////// 
int CompressZ (BYTE *dest, unsigned long *destLen, const BYTE *source, unsigned long sourceLen); 
 
///////////////////////////////////////////////////////////////////////////// 
//名称:		UnCompressZ 
//功能:  	解压缩字符串,采用zlib、deflate格式压缩 
//算法: 	RFC1950 (zlib format) 
//	     	RFC1951 (deflate format) 
//入口:		destLen:目的字符串长度,应输入目的字符串最大长度 
//					解压缩成功返回时,是解压缩结果长度	 
//			source:	原字符串 
//			sourceLen:	原字符串长度 
//出口:		dest:	目的字符串 
//			destLen:目的字符串长度,应输入目的字符串最大长度 
//返回:  	成功=0 
//		 	失败 <0  
//	  		-4: 内存不够 
//	  		-5: destLen 太小,调用时destlen要指出dest的长度 
///////////////////////////////////////////////////////////////////////////// 
int UnCompressZ (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 /*_VCZIP_H__*/