现在网盘对用户上传东西都得都检查一下,所以有的时候可能会因为内容不符合网络规范被封掉,不过好在目前网盘的检查机制比较弱,只需要一些很简单的加密就能逃过一劫,比如把文件里面的每一个字节都加一个固定数字,把每一个字节都取反等等。我们这里就采用C++,利用每个字节取反的方式来实现简单的文件加密和解密过程。
源代码
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
void jiaami();
void jieemi();
int main()
{
string x;
cout << " 1.加密 2.解密" << endl;
cout << ">> ";
cin >> x;
if (x == "1")
{
jiaami();
}
else if (x == "2")
{
jieemi();
}
else
{
cout << "请按照要求输入。。。。" << endl;
}
return 0;
}
void jiaami()
{
cout << "要加密的文件名:";
char name[128];
cin >> name;
fstream fp01;
fp01.open(name, ios::in | ios::binary);
fstream fp02;
strcat(name, "_mi");
fp02.open(name, ios::out | ios::binary);
if (fp01.fail() || fp02.fail())
{
cout << "文件读取异常,请检查文件名是否有误";
return;
}
char ch = 0;
while (true)
{
fp01.read(&ch, 1);
if (fp01.eof())
{
break;
}
~ch;
fp02.write(&ch, 1);
}
fp01.close();
fp02.close();
}
void jieemi()
{
cout << "要解密的文件名:";
char name[128];
cin >> name;
fstream fp01(name, ios::in | ios::binary);
name[strlen(name) - 3] = '\0';
fstream fp02(name, ios::out | ios::binary);
if (fp01.fail() || fp02.fail())
{
cout << "文件读取异常,请检查文件名是否有误";
return;
}
char ch;
while (true)
{
fp01.read(&ch, 1);
if (fp01.eof())
{
break;
}
~ch;
fp02.write(&ch, 1);
}
fp01.close();
fp02.close();
}