当前位置: 首页 > article >正文

MFC: 文件加解密(单元测试模块)

背景:

  1. 对敏感配置文件(如 XML 格式的配置文件、用户信息等)进行加密,防止被人以文本形式直接查看。
  2. 软件启动前加载加密的配置或资源文件,运行时再进行解密使用,提高逆向破解门槛。
  3. 在传输 XML 文件(如通过网络发送)前进行加密,保障数据在传输过程中的安全性。
#include <openssl/aes.h>
#include <stdio.h>
#include <stdlib.h>void AESEncrypt(const unsigned char *inputData, size_t dataSize, unsigned char *outputData, const unsigned char *key) {AES_KEY aesKey;AES_set_encrypt_key(key, 256, &aesKey);size_t numBlocks = dataSize / 16;for (size_t i = 0; i < numBlocks; ++i) {AES_ecb_encrypt(inputData + i * 16, outputData + i * 16, &aesKey, AES_ENCRYPT);}
}void AESDecrypt(const unsigned char *inputData, size_t dataSize, unsigned char *outputData, const unsigned char *key) {AES_KEY aesKey;AES_set_decrypt_key(key, 256, &aesKey);size_t numBlocks = dataSize / 16;for (size_t i = 0; i < numBlocks; ++i) {AES_ecb_encrypt(inputData + i * 16, outputData + i * 16, &aesKey, AES_DECRYPT);}
}int main() {unsigned char key[32] = "1234567890abcdef1234567890abcdef";  // 32 字节// Read the XML fileconst char *filePath = "path_to_your_xml_file.xml";FILE *file = fopen(filePath, "rb");if (!file) {perror("File open error");return 1;}fseek(file, 0, SEEK_END);long fileSize = ftell(file);fseek(file, 0, SEEK_SET);unsigned char *originalData = (unsigned char *)malloc(fileSize);fread(originalData, 1, fileSize, file);fclose(file);// Allocate memory for encrypted dataunsigned char *encryptedData = (unsigned char *)malloc(fileSize);AESEncrypt(originalData, fileSize, encryptedData, key);// Write encrypted data back to the filefile = fopen(filePath, "wb");if (!file) {perror("File open error");return 1;}fwrite(encryptedData, 1, fileSize, file);fclose(file);// Clean upfree(originalData);free(encryptedData);return 0;
}
http://www.lryc.cn/news/2387033.html

相关文章:

  • vue+ThreeJs 创建过渡圆圈效果
  • MySQL:12_视图
  • 2025 年开源 LLM 发展趋势细致解读
  • win11+vs2022 安装opencv 4.11.0图解教程
  • n8n 读写本地文件
  • 详解3DGS
  • DEBUG设置为False 时,django默认的后台样式等静态文件丢失的问题
  • 如何提高服务器的QPS来应对618活动的并发流量
  • LlamaFirewall:开源框架助力检测与缓解AI核心安全风险
  • java基础知识回顾3(可用于Java基础速通)考前,面试前均可用!
  • 嵌入式软件架构规范之 - 分层设计
  • 电脑无法识别打印机usb设备怎么办 一键解决!
  • Elasticsearch Synthetic _source
  • C++ -- vector
  • GitLab-CI简介
  • 深入研究Azure 容器网络接口 (CNI) overlay
  • Python打卡第37天
  • 使用 OpenCV 构建稳定的多面镜片墙效果(镜面反射 + Delaunay 分块)
  • HTTP协议版本的发展(HTTP/0.9、1.0、1.1、2、3)
  • 零基础设计模式——结构型模式 - 桥接模式
  • C++对象的内存模型
  • SpringBoot3集成Oauth2.1——4集成Swagger/OpenAPI3
  • 基于深度学习的情绪识别检测系统【完整版】
  • 本地依赖库的版本和库依赖的版本不一致如何解决?
  • Redis学习打卡-Day7-高可用(下)
  • Spark on Yarn 高可用模式部署流程
  • AI时代新词-大模型(Large Language Model)
  • 3d tiles高级样式设计与条件渲染
  • Linux中logger命令的使用方法详解
  • 博奥龙Nanoantibody系列IP专用抗体