• C++ 文件加解密


    通过文件二进制数据 与密钥进行异或处理,可加密文件


    #ifndef __ENCRYPT__HEAD__
    #define __ENCRYPT__HEAD__

    #include <fstream>
    #include <vector>

    namespace Crypto {

       
    /*
    加密文件数据:
    参数:
    filePath    需要加密的文件路径
    key            用于加密的密钥
    size        文件大小
    返回值:
    char*        加密后的二进制数据(可将此数据保存至文件)
    */
    char* encrypt(const char* inFilePath, const char* inKey, int &outSize)
    {
        //以二进制方式读取文件
        std::ifstream fin(inFilePath, std::ios::binary);
        //保存文件二进制数据
        std::vector<char> buf;
        //
        char ch;
        //读取每个字节,并保存在buf容器里
        while( fin.get(ch) ){
            buf.push_back(ch);
        }
        fin.clear();
        fin.close();
        //文件数据大小
        int size = buf.size();
        outSize = size;
        //字节数组
        char* data = new char[size + 1];
        //把二进制数据复制到数组
        std::copy(buf.begin(), buf.end(), data);
        //结束
        data[size] = 0;
        int keyLen = strlen(inKey);
        for (int i = 0; i < size; i++) {
            //将每个字节与key作异或处理
            data[i] ^= inKey[i >= keyLen?i%keyLen:i];
        }
        return data;
    }

    }

    #endif

  • 相关阅读:
    寻找我编程道路的明灯
    Torque2D MIT 学习笔记(7) TAML的使用
    Torque2D MIT 学习笔记(4) 脚本语法(2)
    C++输入/输出流
    设计模式之命令模式
    设计模式之策略模式
    Torque2D MIT 学习笔记(11) 资源管理(3)
    C++文件处理
    Torque2D MIT 学习笔记(2) 目录结构
    设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/imzhstar/p/4096879.html
Copyright © 2020-2023  润新知