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

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.xdnf.cn/news/9150.html

相关文章:

  • 如何做好一份“系统设计“文档
  • 2025河北秦皇岛CCPC补题
  • I/O外设管理(第七章)
  • 本周 edu教育邮箱注册可行方案
  • Python函数异常处理底层实现原理
  • 机器学习-朴素贝叶斯分类
  • Partial Overwrite绕过PIE保护-[HNCTF 2022 WEEK2]ret2text
  • 将docker数据目录迁移到 home目录下
  • 军事大模型及其应用分析
  • 电脑清理重复文件秒扫 + 相似媒体去重 找出空文件夹 / 损坏文件 批量清理
  • 从比分滚动到数据革命:体育数据如何重构我们的观赛体验?
  • 【运维】Zerotier删除节点后的恢复操作指南
  • ASP.NET Core OData 实践——Lesson2增删改查Entity和EntitySet(C#)
  • 三大数据库【字符串连接】与【数据类型转换】对比:Oracle vs MySQL vs SQL Server
  • H310昂达等主板无法开机自启的原因
  • AI时代新词-数字孪生(Digital Twin)
  • 【C++ STL string :深入浅出 从入门到实战】
  • Android设计模式学习总结目录
  • PyTorch入门教程:下载、安装、配置、参数简介、DataLoader(数据迭代器)参数解析与用法合集
  • 能说一下JVM的内存区域吗
  • [De1CTF 2019]SSRF Me
  • OpenSSL 签名格式全攻略:深入解析与应用要点
  • Node.js全局函数详解:定时器与即时回调
  • SCADA|KingSCADA信创4.0-Win10安装过程
  • 全能邮箱全能邮箱:实现邮件管理的自动化!
  • 5月26日复盘-自注意力机制
  • NSSCTF-[安洵杯 2018]boooooom
  • BugKu Web之get
  • Linux之软件包管理器(CentOS系统) —— yum
  • 虚拟机配置桥接,远程工具直接访问