datadeal.cpp
来自「开发环境:Visual C++ .net2003 功能介绍:实现DES的加密和」· C++ 代码 · 共 130 行
CPP
130 行
#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 + =
减小字号Ctrl + -
显示快捷键?