AES128-ECB对文件进行加密解密验证

一、源码函数讲解

  • 源码下载地址
#ifndef __AES_H__
#define __AES_H__#include <stdint.h>/* generate expanded key */
参数:key    128bit的密钥ekey    扩展后的密钥(11*16byte)
void AES_KeySchedule(uint8_t *key, uint8_t *ekey);    //扩展密钥/* perform encryption */
参数:ekey    扩展后的密钥(11*16byte)state    要加密的128bit数据,加密后的数据也存放在这里
void AES_Encrypt(uint8_t *ekey, uint8_t *state);      //加密/* perform decryption */
参数:ekey    扩展后的密钥(11*16byte)state    要解密的128bit数据,解密后的数据也存放在这里
void AES_Decrypt(uint8_t *ekey, uint8_t *state);     //解密#endif

二、demo验证

#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"
#include "aes.h"
#include "string.h"//密钥,随机生成即可
uint8_t key[16] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};
uint8_t buff[16] = {0};
char *input_file = "./IAP_Pile.bin";        //要加密文件路径
char *enc_file = "./enc.bin";               //加密后的文件路径
char *dec_file = "./dec.bin";               //解密后的文件路径int main(void)
{//存放扩展密钥的数组uint8_t ekey[176] = {0};FILE *input_fp = NULL;FILE *enc_fp = NULL;FILE *dec_fp = NULL;int Ret = 0;//根据密钥生成扩展密钥AES_KeySchedule(key, ekey);input_fp = fopen(input_file, "rb");if (NULL == input_fp){perror("fail to fopen!\r\n");return -1;}enc_fp = fopen(enc_file, "wb+");if (NULL == enc_fp){perror("fail to fopen!\r\n");return -1;}dec_fp = fopen(dec_file, "wb+");if (NULL == dec_fp){perror("fail to fopen!\r\n");return -1;}printf("加密文件...\r\n");while (1){memset(buff, 0, sizeof(buff));Ret = fread(buff, 1, sizeof(buff), input_fp);// printf("Ret = %d\r\n", Ret);if (Ret <= 0){break;}//加密AES_Encrypt(ekey, buff);fwrite(buff, 1, 16, enc_fp);}printf("文件加密成功,输出文件为:%s\r\n", enc_file);fseek(enc_fp, 0, SEEK_SET);printf("解密文件...\r\n");while (1){memset(buff, 0, sizeof(buff));Ret = fread(buff, 1, sizeof(buff), enc_fp);// printf("Ret = %d\r\n", Ret);if (Ret <= 0){break;}//解密AES_Decrypt(ekey, buff);fwrite(buff, 1, 16, dec_fp);}printf("文件解密成功,输出文件为:%s\r\n", dec_file);fclose(input_fp);fclose(enc_fp);fclose(dec_fp);return 0;
}

AES128-ECB对文件进行加密解密验证相关推荐

  1. C#实现AES算法对文件的加密解密

    本文实现了C#内置的AES算法对文件进行加密解密.有关AES的介绍不再赘述,主要讲如何实现文件的加密解密.项目工程源代码下载 网上的实现基本上都是要16,24或32位密码,密钥向量也要16位,都固定死 ...

  2. java 文件 加解密_Java实现文件的加密解密功能示例

    Java实现文件的加密解密功能示例 发布时间:2020-10-05 22:05:15 来源:脚本之家 阅读:86 作者:FC WORLD!!! 本文实例讲述了Java实现文件的加密解密功能分享给大家供 ...

  3. java实现文件加密与解密_Java实现文件的加密解密功能示例

    本文实例讲述了Java实现文件的加密解密功能分享给大家供大家参考,具体如下: package com.copy.encrypt; import java.io.File; import java.io ...

  4. java 文件进行加密解密_java使用异或对文件进行加密解密

    本文实例为大家分享了java使用异或对文件进行加密解密的具体代码,供大家参考,具体内容如下 1.使用异或的方式加密文件的原理 一个数异或另一个数两次,结果一定是其本身 2.使用异或的原理加密文件 /* ...

  5. Python实现AES中ECB模式pkcs5padding填充加密/解密(需要加密文档中可以有中文)

    Python实现AES中ECB模式pkcs5padding填充加密/解密(需要加密文档中可以有中文) 一.本文主要解决的问题 二.完整版代码 结果: 三.遇到的问题 1.填充格式错误 2.传入类型错误 ...

  6. java开发文件夹加密解密程序_Java应用开发:文件加密解密

    本人记性不是很好,总是忘记些重要信息,特别是密码,很多时间登录都要试好几个密码才成功.所以想到了把 这些容易忘记的重要信息记录到一个文本文件上,再对其加密(不易忘记的密码).对文件的加密,自己写了个小 ...

  7. RC4算法对文件进行加密解密

    RC4算法对文件进行加密解密 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变.它加解密使用相同的密钥,因此也属于对称加密算法.RC4是有线等效加密(WEP ...

  8. java对sha1的解密_Java实现文件的加密解密功能示例

    本文实例讲述了java实现文件的加密解密功能分享给大家供大家参考,具体如下: package com.copy.encrypt; import java.io.file; import java.io ...

  9. 关于文件透明加密解密

    1.windows文件系统概述 硬盘文档加密系统驱动原理一般有两种:通过HOOK一些底层的系统内核调用对文件目录的访问权限进行控制,在文件系统输入输出驱动上层直接建立一个驱动对文件目录的数据进行加密. ...

最新文章

  1. 对于数据库连接池的一些思考和MyBatis的集成与使用
  2. 推荐一本书《网络机器人java编程指南》
  3. Qt实现多国语言(即界面翻译)可实时进行切换
  4. Python编程基础:第十七节 集合Set
  5. MySQL高级 - 日志 - 二进制日志(statement)
  6. Python3 爬虫实战 — 58同城武汉出租房【加密字体对抗】
  7. 为什么企业开发者要关心Silverlight
  8. Bellman_Ford算法(求一个点到任意一点的最短距离)
  9. [转-SSRF]什么是SSRF
  10. python isinstance(object, classinfo)
  11. 新塘linux启动过程,NUC972调试笔记之NAND分区调整新增
  12. STM32F103与MCGS的通讯
  13. 效仿大众?宝马全新平台战略:简化硬件,强化软件差异化
  14. Thinkpad E430C关闭触摸板(Ubuntu)
  15. php怎么做地图源代码,php直播源码百度地图坐标拾取系统自定义页面
  16. 计算机efs加密,win7系统对文件启用EFs加密功能的处理办法
  17. 使用 opencv 画 五角星
  18. 卡塔尔世界杯出现了半自动越位识别技术、Feelix Palm、动作轨迹捕捉等黑科技,一起来看看吧。
  19. 如何做好API开发 文档
  20. reactive和ref的特性和区别

热门文章

  1. 笔记本安装ubantu系统
  2. 使用引导光盘,将你的PC变身瘦客户机
  3. PDF超过6000页,阿里技术专家
  4. 微信小程序自定义扫码界面
  5. XXX is not an enclosing class
  6. 从git更新代码到本地
  7. Git实战技巧-日常工作总结
  8. Win7下Android开发环境搭建(8.19,8.24,9.30,10.21)
  9. Unicode字碼分佈表(zz)
  10. 电脑一般预装access吗_win7自带access数据库