cpp异或加密解密文件

⌚Time: 2023-03-15 11:01:55

👨‍💻Author: Jack Ge

异或加密和解密的处理算法是一样的,密钥也是一样的,且无顺序之分

加密前


1234

啊啊啊啊

sdsfgh 撒大大



加密后


NMLK

氷鯕牾氷鯕牾

_欗須圬氎?



代码


#include <iostream>

#include <fstream>

#include <string.h>

using namespace std;

char encrypt_char(char arg){

    arg ^= 's';

    arg ^= 'c';

    arg ^= 'o';

    //加密生成的'\0'等字符会影响之后对文件读取,再次异或消除掉。解密时也是同样的处理算法

    if(arg == '\0' || arg == '\n'){

        arg ^= 's';

        arg ^= 'c';

        arg ^= 'o';

    }

    return arg;

}

int main(int argc, char* argv[]){

    if(argc != 2){

        cerr<<"usage:"<<argv[0]<<" filename";

        return -1;

    }

    ifstream iFile(argv[1],ios::in);

    if(!iFile.is_open()){

        cerr<<"open file fail";

        return -1;

    }

    ofstream oFile("encrypt.txt",ios::out);

    if(!oFile.is_open()){

        cerr<<"write file fail";

        return -1;

    }

    char buff[1024] = {0};

    while(iFile.getline(buff,sizeof(buff))){

        for(int i=0; i<strlen(buff); i++){

            buff[i] = encrypt_char(buff[i]);

        }

        oFile<<buff<<endl;

    }

    iFile.close();

    oFile.close();

    return 0;

}


将文件输入程序是加密,将加密后的文件输入程序处理就是解密