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

📄 datadeal.cpp

📁 开发环境:Visual C++ .net2003 功能介绍:实现DES的加密和解密。
💻 CPP
字号:
#include "StdAfx.h"
#include ".\datadeal.h"
#include "DES.h"
#include <fstream>
using namespace std;

CDataDeal::CDataDeal(void)
{
}

CDataDeal::~CDataDeal(void)
{
}

void CDataDeal::EncryptFile(char * file_name, unsigned char * key, bool isEncode)
{
	CDES des;

	unsigned char _key[8];
	memcpy(_key, key, 8);//得到密钥.

	unsigned char msg[8];

	char filename[128];	
	if(isEncode == ENCODE)
	{
		strcpy(filename, "ENCODE_");
	}
	else
	{
		strcpy(filename, "DECODE_");
	}
	strcat(filename, file_name);
	filename[127] = 0;//完成对文件名的定义

	ofstream outfile;
	ifstream infile;
	outfile.open(filename, ios::out);
	infile.open(file_name, ios::in);

	bool isEOF = false;
	while(infile)
	{
		memset(msg, 0, 8);

		for(int i = 0; i < 8; ++i)
		{
			if(infile)
			{
				msg[i] = (unsigned char)infile.get();	
			}
			else
			{
				--i;
				if(i > 0)
				{
					des.DES_Compute(msg, _key, isEncode);
					for(int i = 0; i < 8; ++i)
					{
						outfile.put(msg[i]);
					}
				}
				isEOF = true;
				break;
			}			
		}

		if(isEOF)
		{
			break;
		}

		des.DES_Compute(msg, _key, isEncode);

		for(int i = 0; i < 8; ++i)
		{
			outfile.put(msg[i]);
		}
	}

	infile.close();
	outfile.close();	
}

void CDataDeal::EncryptString(char * str, char * key, bool isEncode)
{
	CDES des;

	unsigned char _key[8];
	memcpy(_key, key, 8);//得到密钥.

	unsigned char msg[8];

	bool isEOF = false;
	while(str[0])
	{
		memset(msg, 0, 8);

		for(int i = 0; i < 8; ++i)
		{			
			if(str[0])
			{
				msg[i] = (unsigned char)str[i];
			}
			else
			{
				--i;
				if(i > 0)
				{
					des.DES_Compute(msg, _key, isEncode);
					memcpy(str, msg, 8);
					str += 8;
				}
				isEOF = true;
				break;
			}			
		}

		if(isEOF)
		{
			break;
		}

		des.DES_Compute(msg, _key, isEncode);
		memcpy(str, msg, 8);
		str += 8;
	}
	
}

⌨️ 快捷键说明

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