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

📄 encryption.cpp

📁 对文件加密解密 附带文件传输功能,感觉还可以哦!
💻 CPP
字号:
// ENCRYPTION.cpp: implementation of the CENCRYPTION class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Mysun.h"
#include "ENCRYPTION.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CENCRYPTION::CENCRYPTION()
{
	
}

CENCRYPTION::~CENCRYPTION()
{
	
}
//==================================对原文进行加密并覆盖原缓冲区
void CENCRYPTION::TxtEncrypt(unsigned* cipSourceTxt, int buffSize, unsigned int Ke, unsigned int model)
{
	int i;
	for( i=0; i < buffSize; i++ )
	{
		cipSourceTxt[i] = GetOutNum( cipSourceTxt[i], Ke, model );
	}
}
//==================================求b的e次方除d的余数
unsigned int CENCRYPTION::GetOutNum(unsigned int b,unsigned int e , unsigned int d)
{
	unsigned int i;
	unsigned int outNum= 1;
	for( i=0; i < e; i++)//=========用了乘的模 等于 模的乘
	{
		outNum *= b;
		if( outNum >= d )
		{
			outNum %= d;
		}
		if(!outNum)
			return outNum;
	}
	return outNum%d;
}
void CENCRYPTION::Encrypt(UINT PublicKey, UINT mod, FILE* fipRe, FILE* fipWr ,char* extrName)
{
	unsigned int ReSize;
	unsigned int uBuf[BUFFER_SIZE]= {0,};
	char cBuf[BUFFER_SIZE];
	unsigned int i;
	for(i=0; i<3; i++)//=====我认为扩展名是3个字符
	{
		if(extrName)//=========如果有扩展名, 将扩展名放入uBuf 和数据一样加密
		{
			uBuf[i]= 0;
			*((char*)(&uBuf[i])) = extrName[i];
		}
		else
			uBuf[i]= 0;
	}
	if(extrName)//===============如果有扩展名, 将扩展名加密
		TxtEncrypt(uBuf, 3,PublicKey,mod);
	fwrite( (char*)uBuf,1, 3*sizeof(unsigned int), fipWr);//密文前12个,字节中是源文件的 扩展名信息
	do
	{
		ReSize= fread(cBuf, 1, BUFFER_SIZE,fipRe);
		if(ReSize)
		{
			unsigned int record=1;
			unsigned int WrNum;
			for(i=0; i < ReSize; i++)
			{
				uBuf[i]= 0;
				*((char*)(&uBuf[i])) = (cBuf[i]) ;
			}    TxtEncrypt(uBuf, ReSize,PublicKey,mod);    WrNum= fwrite( (char*)uBuf,1, ReSize*sizeof(unsigned int), fipWr);
			printf("第%d次写入%d字节!\n",record++, WrNum);
		}
	}while(ReSize == BUFFER_SIZE);
}
void CENCRYPTION::Explain(UINT PrivateKey, UINT mod, FILE* fipRe, FILE* fipWr )
{
	unsigned int ReSize;
	unsigned int uBuf[BUFFER_SIZE]= {0,};
	char cBuf[BUFFER_SIZE];
	do
	{
		ReSize= fread(uBuf, sizeof(unsigned int), BUFFER_SIZE,fipRe);
		if(ReSize)
		{
			unsigned int i;
			unsigned int record=1;
			unsigned int WrNum;
			TxtEncrypt(uBuf, ReSize,PrivateKey,mod);
			for(i=0; i<ReSize; i++)
				cBuf[i]= (char)(uBuf[i]);
			WrNum= fwrite( cBuf,1, ReSize, fipWr);   
			printf("第%d次写入%d字节!\n",record++, WrNum);
		}
		
	}while(ReSize == BUFFER_SIZE);
}

⌨️ 快捷键说明

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