📄 pytdesmodule.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 + -