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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。