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

📄 c_desencryptfile.cpp

📁 RSA和DES的一些类~~可以对初学者有些帮助
💻 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 + -