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

📄 xsecu.cpp

📁 包含md5,aec,dec算法
💻 CPP
字号:
#include "xsecu.h"
#include "Md5.c"
#include "Aes.h"
//#include <time.h>

bool WINAPI	DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
	switch (fdwReason)
	{
		case DLL_PROCESS_ATTACH:
			break;
		case DLL_THREAD_ATTACH:
			break;
		case DLL_THREAD_DETACH:
			break;
		case DLL_PROCESS_DETACH:
			break;
		default:
			break;
	}
	return TRUE;
}

extern "C" DLL_EXPORT	void	hash(char *string, long buflen, char digest[])
{
	char *sTemp=(char*)malloc(buflen);
	memcpy(sTemp,string,buflen);
	MD5String(sTemp, buflen, digest);
	free(sTemp);
}

extern "C" DLL_EXPORT	void	encX(char *lpBuf, long buflen, char *key, char *lpBufOut, long &outbuflen)
{
	long nLoseChar=buflen%16;

	if(nLoseChar==0)
		outbuflen=buflen;
	else
		outbuflen=buflen+16-nLoseChar;

	enc(lpBuf, buflen, key, lpBufOut);
}

//buflen <= 16
extern "C" DLL_EXPORT	void	enc(char *lpBuf, long buflen, char *key, char *lpBufOut)
{
	CAes oAes;
	oAes.MakeKey(key, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16, 16);
	
//	oAes.Encrypt(lpBuf,lpBufOut,buflen);
//	return;

	long nLoseChar;
	char sTemp[17];
	nLoseChar=buflen%16;

	if(buflen-nLoseChar>0)
		oAes.Encrypt(lpBuf,lpBufOut,buflen-nLoseChar);

	if(nLoseChar==0)
		return;

	memset(sTemp,0,17);
	memcpy(sTemp,lpBuf+buflen-nLoseChar,nLoseChar);
	oAes.Encrypt(sTemp,lpBufOut+buflen-nLoseChar,16);


/*


	char szDataIn[17];
	char szDataOut[17];

	long i;
	for(i=0;i<nBlock;i++)
	{
		memset(szDataIn,0,17);
		memset(szDataOut,0,17);

		if(i!=nBlock-1)
			memcpy(szDataIn,lpBuf+i*16,16);
		else
			memcpy(szDataIn,lpBuf+i*16,buflen-i*16);

		
		oAes.EncryptBlock(szDataIn, szDataOut);
		memcpy(lpBufOut+i*16,lpBufOut,16);
	}

//	buflenOut=nBlock*16;
*/
}

//buflen <= 16
extern "C" DLL_EXPORT	void	dec(char *lpBuf, long buflen, char *key, char *lpBufOut)
{
	CAes oAes;
	oAes.MakeKey(key, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16, 16);
	oAes.Decrypt(lpBuf,lpBufOut,buflen);
	return;
}

extern "C" DLL_EXPORT	void	randArray(char *lpBuf, long buflen)
{
	srand(::GetTickCount()%65536);
	for(int i=0;i<buflen;i++)
	{
		lpBuf[i]=rand()%256;
	}
}

⌨️ 快捷键说明

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