美文网首页
C++ 文件的加密与解密

C++ 文件的加密与解密

作者: 红鲤鱼与绿鲤鱼与驴与鱼 | 来源:发表于2023-08-29 10:26 被阅读0次

    思路:对文件的每个字节进行异或运算之后得到新的文件就是加密的,反之就是解密

    加密

    /**
     文件加密:使用密码加密
     */
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    int main(){
        string filePath = "/Users/aaa/Documents/C++File/a.jpg";
        string fileEncodePath = "/Users/aaa/Documents/C++File/a_encode.jpg";
        
        FILE* file = fopen(filePath.data(), "rb");//以读取的模式打开文件
        FILE* fileEncode = fopen(fileEncodePath.data(), "wb");
        if (!file) {
            printf("%s文件路径错误\n",filePath.data());
            exit(0);
        }
        
        int a;
        //文件在解密时必须与此密码一致
        char password[] = "123456abcd23";
        int index = 0;
        while ((a = fgetc(file))!= EOF) {
            char item = password[index%strlen(password)];
            //单个字节 异或 之后存入新文件中
            fputc(a^item, fileEncode);
            index++;
        }
        fclose(file);
        fclose(fileEncode);
        return 0;
     }
    

    解密

    /**
     文件解密
     */
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    
    int main(){
        string filePath = "/Users/aaa/Documents/C++File/a_encode.jpg";
        string fileDecodePath = "/Users/aaa/Documents/C++File/a_decode.jpg";
        
        FILE* file = fopen(filePath.data(), "rb");//以读取的模式打开文件
        FILE* fileDecode = fopen(fileDecodePath.data(), "wb");
        if (!file) {
            printf("%s文件路径错误\n",filePath.data());
            exit(0);
        }
        
        int a ;
        //和上面加密时的密钥一致
        char password[] = "123456abcd23";
        int index = 0;
        int len = strlen(password);
        while ((a=fgetc(file))!=EOF) {
            char item = password[index%len];
            fputc(a^item, fileDecode);
            index++ ;
        }
        
        fclose(file);
        fclose(fileDecode);
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:C++ 文件的加密与解密

          本文链接:https://www.haomeiwen.com/subject/nevnmdtx.html