admin管理员组

文章数量:1575555

现在网盘对用户上传东西都得都检查一下,所以有的时候可能会因为内容不符合网络规范被封掉,不过好在目前网盘的检查机制比较弱,只需要一些很简单的加密就能逃过一劫,比如把文件里面的每一个字节都加一个固定数字,把每一个字节都取反等等。我们这里就采用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();
}

本文标签: 文件加密简单