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

📄 pytdesmodule.cpp

📁 数据加密的工具源代码
💻 CPP
字号:
// PYTDESModule.cpp: implementation of the CPYTDESModule class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "PYTDESModule.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#define MAX_BUFFER	6000000

CPYTDESModule::CPYTDESModule()
{
	m_strKey = "00000000";

}

CPYTDESModule::~CPYTDESModule()
{

}


BOOL CPYTDESModule::MakeEncryptDat(CFile * pFile,long lOffset,long lLength)
{
	ASSERT(pFile != NULL);
	ASSERT(lLength != 0);

	unsigned char * pBuffer = (unsigned char *)LocalAlloc(LMEM_FIXED,MAX_BUFFER);
	unsigned char * pData = (unsigned char *)LocalAlloc(LMEM_FIXED,MAX_BUFFER);
	unsigned char pTemp[8];
	memset(pData,0,MAX_BUFFER);
	memset(pBuffer,0,MAX_BUFFER);
	memset(pTemp,0,sizeof(pTemp));
	
	if(pFile->Seek(lOffset,CFile::begin) != lOffset)
	{
		AfxMessageBox("设置文件指针失败!");
		return FALSE;
	}
	if(pFile->ReadHuge(pBuffer,lLength) != (DWORD)lLength)
	{
		AfxMessageBox("读取文件失败!");
		return FALSE;
	}
	long nPos = 0;
	long nDataPos = 0;
	long lCount = lLength / 8;
	int nOver = lLength % 8;
	if(nOver != 0)lCount ++;
	for(long i = 0; i < lCount ; i ++)
	{
		memcpy(pTemp,pBuffer + nPos,8);nPos += 8;
		m_des.deskey((unsigned char *)(LPCTSTR)m_strKey,ENCRYPT);
		m_des.des(pTemp,pData + nDataPos);nDataPos += 8;
		memset(pTemp,0,sizeof(pTemp));
	}

	pFile->Seek(lOffset,CFile::begin);
	if(nOver != 0)
		pFile->WriteHuge(pData,lLength + (8 - nOver));
	else
		pFile->WriteHuge(pData,lLength);
	
	LocalFree(pBuffer);
	LocalFree(pData);
	return TRUE;
}

BOOL CPYTDESModule::DecryptDat(CString strKey,unsigned char * pBuffer,long lLength)
{
	ASSERT(pBuffer != NULL);
	ASSERT(lLength != 0);
	unsigned char * pData = (unsigned char *)LocalAlloc(LMEM_FIXED,MAX_BUFFER);
	unsigned char pTemp[8];
	memset(pTemp,0,sizeof(pTemp));
	memset(pData,0,MAX_BUFFER);
	
	long nPos = 0;
	long nDataPos = 0;
	long lCount = lLength / 8 ;
	int nOver = lLength % 8;
	if(nOver != 0)
	{
		AfxMessageBox("数据长度不规范!");
		return FALSE;
	}
	for(long i = 0; i < lCount; i ++)
	{
		memcpy(pTemp,pBuffer + nPos,8);nPos += 8;
		m_des.deskey((unsigned char *)(LPCTSTR)strKey,DESCRYPT);
		m_des.des(pTemp,pData + nDataPos); nDataPos += 8;
		memset(pTemp,0,sizeof(pTemp));
	}
	memcpy(pBuffer,pData,lLength);
	LocalFree(pData);
	return TRUE;
}

⌨️ 快捷键说明

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