首页 > 代码库 > 仿射密码加密解密文件流

仿射密码加密解密文件流

#include<iostream>#include<string>#include<fstream>#include<Windows.h>using namespace std;class PWoper{    string inpatch;    string outpatch;public:    PWoper(string in, string out)    {        inpatch = in;        outpatch = out;    }    void encrypt()    {        ifstream init(inpatch, ios::binary);        ofstream outit(outpatch, ios::binary);        if (!init || !outit)        {            cout << "IN ERROR OR OUT ERROR!" << endl;        }        int *initp = new int();        int *outitp = new int();        while (init.read((char*)initp, 1)){            //cout << *initp << endl;            *outitp = (*initp * 177 + 135) % 311;            //cout << "out--"<<*outitp << endl;            //一个字节8位,最大256;这里的 "*outitp mod 311" 数值最大311,如果以1个字读进来运算以后write装不下。            outit.write((char*)outitp, 2);        }        cout << "encrypt success!\n";        init.close();        outit.close();        //delete original data                string temp = "del ";        temp += inpatch;        //system命令只接受一个参数,以下代码实现system("del 变量")。        const char *link = temp.data();        system(link);    }    void decrypt()    {        ofstream init(inpatch, ios::binary);        ifstream outit(outpatch, ios::binary);        if (!init || !outit)        {            cout << "IN ERROR OR OUT ERROR!" << endl;        }        int *ini = new int();        int *outi = new int();        while (outit.read((char*)outi, 2)){            //cout << *outi << endl;            *ini = ((*outi - 135 + 311) * 123) % 311;            //cout <<"out"<< *ini <<endl;            //            init.write((char*)ini, 1);        }        cout << "decrypt success!\n";        init.close();        outit.close();    }};int main(){    string inpatch, outpatch, str;    cout << "input InPtach: ";    cin >> inpatch;    cout << "input OutPatch: ";    cin >> outpatch;    PWoper pwoper(inpatch, outpatch);    pwoper.encrypt();    cout << "input ok to decrypt: ";    cin >> str;    //system("cls");    if (str == "ok")        pwoper.decrypt();    else {        cout << "input error!";        system("pause");    }    system("pause");}

 

仿射密码加密解密文件流