📄 c_desencryptfile.cpp
字号:
// C_DesEncryptFile.cpp: implementation of the C_DesEncryptFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "RSA.h"
#include "C_DesEncryptFile.h"
#include "C_Des.h"
#include <io.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
namespace Encrypt {
C_DesEncryptFile::C_DesEncryptFile()
{
}
C_DesEncryptFile::~C_DesEncryptFile()
{
}
bool C_DesEncryptFile::EncryptFile(LPCTSTR lpSourceFile, LPCTSTR lpszDestFile, const BYTE key[8], bool bFlag)
{
HANDLE hSHandle;
HANDLE hDHandle;
hSHandle = OpenFile(lpSourceFile, true);
if (INVALID_HANDLE_VALUE == hSHandle)
{
return false;
}
DWORD dwFileSize = 0;
LPBYTE lpSource = GetFileBuffer(hSHandle, dwFileSize);
if (NULL == lpSource)
{
return false;
}
hDHandle = OpenFile(lpszDestFile, false);
if (INVALID_HANDLE_VALUE == hSHandle)
{
delete [] lpSource;
return false;
}
LPBYTE lpDest = new BYTE [dwFileSize];
bool bret = EncryptFile(lpSource, lpDest, dwFileSize, key, bFlag);
DWORD dwWriteNum = 0;
WriteFile(hDHandle, lpDest, dwFileSize, &dwWriteNum, NULL);
CloseHandle(hDHandle);
delete [] lpSource;
delete [] lpDest;
return bret;
}
bool C_DesEncryptFile::EncryptFile(LPCBYTE lpSource, LPBYTE lpDest, unsigned int nSize, const BYTE key[8], bool bFlag)
{
C_Des DesEncrpty;
BOOLEAN bRet = DesEncrpty.CDesEnter(lpSource, lpDest, nSize, key, bFlag);
if (bRet)
{
return true;
}
return false;
}
HANDLE C_DesEncryptFile::OpenFile(LPCTSTR lpSourceFile, bool bReadMode)
{
DWORD dwMode = GENERIC_READ ;
DWORD dwShared = FILE_SHARE_READ;
DWORD dwCreate = OPEN_EXISTING;
if (!bReadMode)
{
dwMode |= GENERIC_WRITE;
dwShared |= FILE_SHARE_WRITE;
dwCreate = CREATE_ALWAYS;
}
HANDLE hTemplateFile = NULL;
hTemplateFile = ::CreateFile(lpSourceFile, dwMode, dwShared, NULL,
dwCreate, FILE_ATTRIBUTE_NORMAL, hTemplateFile);
return hTemplateFile;
}
LPBYTE C_DesEncryptFile::GetFileBuffer(HANDLE &hFile, DWORD &dwFileSize)
{
DWORD dwFileHigh = 0;;
DWORD dwRealSize = dwFileSize = GetFileSize(hFile, &dwFileHigh);
if (dwFileSize % 8 != 0)
{
DWORD dwRatio = dwFileSize / 8;
dwFileSize = (dwRatio + 1) * 8;
}
LPBYTE pSourBuffer = new BYTE [dwFileSize];
DWORD dwReadNum = 0;
ReadFile(hFile, pSourBuffer, dwRealSize, &dwReadNum, NULL);
CloseHandle(hFile);
DWORD dwOffset = dwFileSize - dwRealSize;
ZeroMemory(pSourBuffer + dwRealSize, dwOffset);
return pSourBuffer;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -