码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 文件加解密

时间:2014-11-14 13:51:33      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   sp   for   文件   数据   on   ad   

 

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


#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

C++ 文件加解密

标签:io   ar   os   sp   for   文件   数据   on   ad   

原文地址:http://www.cnblogs.com/imzhstar/p/4096879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!