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

#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++ 文件加解密的更多相关文章

  1. L脚本语言实现文件加解密

    L脚本语言中能够对内存对象进行AES加解密.我们能够非常easy地实现文件加解密 #scp #定义一个秘钥字符串 定义:字符串,str1,abcdefg 打开:文件,file1,c:\1.txt 打开 ...

  2. JAVA AES文件加解密

    AES加解密算法,代码如下: /** * Created by hua on 2017/6/30. */ import javax.crypto.Cipher; import javax.crypto ...

  3. 使用OpenSSL生成RSA秘钥对并对文件加解密

    生成RSA私钥 openssl genrsa -out rsa.key 1024 生成RSA公钥 openssl rsa -in rsa.key -pubout -out pub.key 创建明文文件 ...

  4. Java拓展教程:文件DES加解密

    Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...

  5. DES加解密算法Qt实现

      算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...

  6. AES加解密算法Qt实现

    [声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...

  7. 全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件

    作者: zyl910 一.缘由 RSA是一种常用的非对称加密算法.所以有时需要在不用编程语言中分别使用RSA的加密.解密.例如用Java做后台服务端,用C#开发桌面的客户端软件时. 由于 .Net.J ...

  8. Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作

    # -*- coding: gb2312 -*- #用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作 #作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.co ...

  9. C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密

    C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩   这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http:// ...

随机推荐

  1. 前端程序员初步认识 docker

    初步认识 docker 为什么要学习 docker 有同学说他开发工作中有两大神器,一个是 vim 编辑器,另一个就是 Docker. 什么是 docker Docker 是一个开源的应用容器引擎. ...

  2. rinetd基于内网TCP端口转发

    在Linux系统中大多数情况选择用iptables来实现端口转发,iptables虽然强大,但配置不便,而且新手容易出错.在此分享另一个TCP/UDP端口转发工具rinetd,rinetd体积小巧,配 ...

  3. 【axios三部曲】一、使用axios

    axios作为一个基于promise的网络请求库,它同时支持浏览器和node环境,是我们开发中常用的一个库 ​ 它的一些特性: 从浏览器发出XMLHttpRequests 从node.js发出http ...

  4. Linux之history使用技巧

    背景: 正常情况下,Linux系统中输入 history  只显示序号和历史命令如下图,但是当我们想要根据历史命令来排查一些故障问题时,无法精确获取该命令执行的详细信息,包括执行时间.执行的用户.是哪 ...

  5. 智能化管理工具:商业智能BI

    ​BI(商业智能)是在ERP等信息化管理工具的基础上提出的,是基于信息技术构建的智能化管理工具,它实时地对ERP.CRM.SCM等管理工具生成的企业数据进行各种分析,并给出报告,帮助管理者认识企业和市 ...

  6. C#调用带参数的python脚本

    问题描述:使用C#调用下面的带参数的用python写的方法,并且想要获取返回值. def Quadratic_Equations(a,b,c): D=b**2-4*a*c ans=[] ans.app ...

  7. MySQL Community Server安装

    MySQL Community Server安装 下载地址:https://dev.mysql.com/downloads/mysql/,zip安装,解压缩之后其实就可以用了,但是要进行配置. 1,解 ...

  8. weblogic补丁安装失败

    转至:https://www.cnblogs.com/lsdb/p/7234989.html weblogic补丁安装失败(Patch B25A is mutually exclusive and c ...

  9. Qt:QThread

    0.说明 QThread提供了一种与平台无关的线程管理方法. 一个QThread对象管理一个线程.QThread通过run()方法启动线程.默认情况下,run()方法通过exec()启动一个事件循环, ...

  10. openpyxl模块的读写使用及mongodb概念

    今日内容概要 openpyxl模块 MongoDB数据库 今日内容详细 openpyxl模块 # 下载 pip3 install openpyxl # 使用 '''openpyxl内部读写也是分离的 ...