通过文件二进制数据 与密钥进行异或处理,可加密文件
#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