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

openssl的aes128_ECB加密解密运算实例

aes128算法ECB接口

加密接口

注意事项:

  • EVP_EncryptInit_ex初始化算法EVP_aes_128_ecb(),和密钥,key至少16B
  • EVP_EncryptUpdate加密运算,tmplen输出已加密长度
  • EVP_EncryptFinal_ex结束运算,如果在此仍有加密运算,则加密长度tmplen需补充到密文长度中

int openssl_aes128_encrypt_ecb(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
{EVP_CIPHER_CTX* ctx = NULL;ctx = EVP_CIPHER_CTX_new();int tmplen = 0;printf("%s %d\n", __func__, __LINE__);EVP_EncryptInit_ex(ctx, EVP_aes_128_ecb(), NULL, key, NULL);if (!EVP_EncryptUpdate(ctx, out_buf, &tmplen, in_buf, in_len)){EVP_CIPHER_CTX_free(ctx);return -1;}*out_len = tmplen;if (!EVP_EncryptFinal_ex(ctx, out_buf + *out_len, &tmplen)){EVP_CIPHER_CTX_free(ctx);return -2;}*out_len += tmplen;EVP_CIPHER_CTX_free(ctx);return 0 ;
}

解密接口

注意事项:

  • EVP_DecryptInit_ex初始化算法EVP_aes_128_ecb(),和密钥,key至少16B
  • EVP_DecryptUpdate解密运算,tmplen输出已解密长度
  • 如果剩余字节是16B,再次使用EVP_DecryptUpdate
  • 如果剩余字节不是16B整数倍,使用EVP_EncryptFinal_ex结束运算,输出加密长度tmplen补充到密文长度中
int openssl_aes128_decrypt_ecb(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
{int ret = 0 ,tmplen = 0;EVP_CIPHER_CTX* ctx = NULL;ctx = EVP_CIPHER_CTX_new();EVP_CIPHER_CTX_set_padding(ctx, 0);printf("%s %d\n", __func__, __LINE__);EVP_DecryptInit_ex(ctx, EVP_aes_128_ecb(), NULL, key, NULL);if (!EVP_DecryptUpdate(ctx, out_buf, &tmplen, in_buf, in_len)){EVP_CIPHER_CTX_free(ctx);return -1;}*out_len = tmplen;if (in_len > tmplen) {if (!EVP_DecryptUpdate(ctx, out_buf+tmplen, &tmplen, in_buf+tmplen, in_len-tmplen)){//        RSP_TRACE("%s EVP_DecryptUpdate error \n", __func__);EVP_CIPHER_CTX_free(ctx);return -1;}*out_len += tmplen;}if (in_len %16!=0){ret = EVP_DecryptFinal_ex(ctx, out_buf+tmplen, &tmplen);fprintf(stderr, "err:\n");if (ret != 0){//        RSP_TRACE("%s EVP_DecryptFinal_ex error ret=%d\n", __func__, ret);EVP_CIPHER_CTX_free(ctx);return -2;}*out_len += tmplen;}EVP_CIPHER_CTX_free(ctx);return 0 ;
}

相关文章:

openssl的aes128_ECB加密解密运算实例

aes128算法ECB接口 加密接口 注意事项: EVP_EncryptInit_ex初始化算法EVP_aes_128_ecb(),和密钥,key至少16BEVP_EncryptUpdate加密运算,tmplen输出已加密长度EVP_EncryptFinal_ex结束运算,如果在此仍有加密运算&…...

单片机总结【GPIO/TIM/IIC/SPI/UART】

一、GPIO 1、概念 通用输入输出口;开发者可以根据自己的需求将其配置为输入或输出模式,以实现与外部设备进行数据交互、控制外部设备等功能。简单来说,GPIO 就像是计算机或微控制器与外部世界沟通的 “桥梁”。 2、工作模式 工作模式性质特…...

动态部署Web应用程序与web.xml配置详解

文章目录 前言一、动态部署Web应用程序1.1 什么是动态部署?1.2 动态部署的步骤1.3 动态部署的优势 二、web.xml 配置文件2.1 什么是web.xml?2.2 web.xml 文件的结构2.2.1常见配置(1) 配置上下文参数(2) 配置Servlet(3)配置过滤器(…...

Rt-thread源码剖析(1)——内核对象

前言 该系列基于rtthread-nano的内核源码,来研究RTOS的底层逻辑,本文介绍RTT的内核对象,对于其他RTOS来说也可供参考,万变不离其宗,大家都是互相借鉴,实现不会差太多。 内核对象容器 首先要明确的一点是什…...

Python 的历史进程

Python:编程世界中的瑞士军刀 在当今数字化飞速发展的时代,编程语言层出不穷,而 Python 无疑是其中一颗耀眼的明珠。它以其简洁优雅的语法、强大的功能以及广泛的应用领域,成为了全球开发者炙手可热的编程语言之一。 Python 是一种…...

十一、大数据治理平台总体功能架构

大数据治理平台的功能架构图中心主题:数据治理 核心重点是建立健全大数据资产管理框架,确保数据质量、安全性、可访问性和合规性。 大数据治理平台总体功能架构图 关键功能领域 1.数据资产平台(左侧) 此部分主要关注数据资产本身…...

STM32——HAL库开发笔记23(定时器4—输入捕获)(参考来源:b站铁头山羊)

定时器有四个通道,这些通道既可以用来作为输入,又可以作为输出。做输入的时候,可以使用定时器对外部输入的信号的时间参数进行测量;做输出的时候,可以使用定时器向外输出精确定时的方波信号。 一、输入捕获 的基本原理…...

爬虫反爬:CSS位置偏移反爬案例分析与实战案例

文章目录 1. 反爬机制概述2. 反爬原理3. 案例分析4. 破解思路5. 实战样例样例1:使用Python和Selenium破解CSS位置偏移反爬样例2:电商网站商品列表CSS位置偏移反爬破解 6. 总结 1. 反爬机制概述 CSS位置偏移反爬是一种常见的反爬虫技术,通过C…...

libGL.so.1: cannot open shared object file: No such file or directory-linux022

in <module> from PyQt5.QtGui import QPixmap, QFont, QIcon ImportError: libGL.so.1: cannot open shared object file: No such file or directory 这个错误信息表示XXXX 在启动时遇到问题&#xff0c;缺少 libGL.so.1 文件。libGL.so.1 是与 OpenGL 图形库相关的共…...

向量数据库milvus部署

官方文档 Milvus vector database documentationRun Milvus in Docker (Linux) | Milvus DocumentationMilvus vector database documentation 按部署比较简单&#xff0c;这里说一下遇到的问题 一&#xff1a;Docker Compose 方式部署 1、镜像无法拉取,(docker.io被禁) …...

修改`FSL Yocto Project Community BSP`用到的u-boot源码,使其能适配百问网(100ask)的开发板

前言 在博文 https://blog.csdn.net/wenhao_ir/article/details/145547974 中,我们利用官方提供的BSP(FSL Yocto Project Community BSP)构建了写到SD卡中的完整镜像,然后启动后发现存在不少问题,首要的问题就是u-boot不能识别网卡,在这篇博文中,我们就找到FSL Yocto Pro…...

(python)Arrow库使时间处理变得更简单

前言 Arrow库并不是简单的二次开发,而是在datetime的基础上进行了扩展和增强。它通过提供更简洁的API、强大的时区支持、丰富的格式化和解析功能以及人性化的显示,填补了datetime在某些功能上的空白。如果你需要更高效、更人性化的日期时间处理方式,Arrow库是一个不错的选择…...

Pytorch框架06-现有网络模型(修改/使用/保存/加载)

3.9 PyTorch网络模型的修改及使用 PyTorch 提供了多个预训练的网络模型&#xff0c;涵盖了广泛的计算机视觉任务&#xff0c;如图像分类、目标检测、语义分割等。这些预训练模型在 ImageNet 等大型数据集上进行了训练&#xff0c;并可以直接用于迁移学习或微调。 3.9.1 常见的…...

【亲测有效】百度Ueditor富文本编辑器添加插入视频、视频不显示、和插入视频后二次编辑视频标签不显示,显示成img标签,二次保存视频被替换问题,解决方案

【亲测有效】项目使用百度Ueditor富文本编辑器上传视频相关操作问题 1.百度Ueditor富文本编辑器添加插入视频、视频不显示 2.百度Ueditor富文本编辑器插入视频后二次编辑视频标签不显示&#xff0c;在编辑器内显示成img标签&#xff0c;二次保存视频被替换问题 问题1&#xff1…...

MySQL 使用 `WHERE` 子句时 `COUNT(*)`、`COUNT(1)` 和 `COUNT(column)` 的区别解析

文章目录 1. COUNT() 函数的基本作用2. COUNT(*)、COUNT(1) 和 COUNT(column) 的详细对比2.1 COUNT(*) —— 统计所有符合条件的行2.2 COUNT(1) —— 统计所有符合条件的行2.3 COUNT(column) —— 统计某一列非 NULL 的记录数 3. 性能对比3.1 EXPLAIN 分析 4. 哪种方式更好&…...

laravel11设置中文语言包

安装中文语言包 Laravel 11 默认没有内置完整中文语言包&#xff0c;推荐使用第三方维护的完整翻译&#xff1a; # 通过 Composer 安装语言包 composer require laravel-lang/common --dev# 发布中文语言文件到项目 php artisan lang:add zh_CN这会自动将中文语言文件生成到 l…...

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好&#xff0c;如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码&#xff0c;点击S…...

网络七层模型—OSI参考模型详解

网络七层模型&#xff1a;OSI参考模型详解 引言 在网络通信的世界中&#xff0c;OSI&#xff08;Open Systems Interconnection&#xff09;参考模型是一个基础且核心的概念。它由国际标准化组织&#xff08;ISO&#xff09;于1984年提出&#xff0c;旨在为不同厂商的设备和应…...

四、Redis主从复制与读写分离

一、环境搭建 准备环境 IP角色192.168.10.101Master192.168.10.102Slave192.168.10.103Slave 创建配置/数据/日志目录 # 创建配置目录 mkdir -p /usr/local/redis/conf # 创建数据目录 mkdir -p /usr/local/redis/data # 创建日志目录 mkdir -p /usr/local/redis/log修改配置…...

爬虫框架与库

爬虫框架与库是用于网络数据抓取的核心工具&#xff0c;帮助开发者高效地从网页中提取结构化数据。 Requests&#xff1a;用于发送HTTP请求。 BeautifulSoup&#xff1a;用于解析HTML和XML。 Scrapy&#xff1a;强大的爬虫框架&#xff0c;适合大规模爬取。 Selenium&#…...

【保姆级视频教程(二)】YOLOv12训练数据集构建:标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测!

【2025全站首发】YOLOv12训练数据集构建&#xff1a;标签格式转换-划分-YAML 配置 避坑指南 | 小白也能轻松玩转目标检测&#xff01; 文章目录 1. 数据集准备1.1 标签格式转换1.2 数据集划分1.3 yaml配置文件创建 2. 训练验证 1. 数据集准备 示例数据集下载链接&#xff1a;P…...

数据如何安全“过桥”?分类分级与风险评估,守护数据流通安全

信息化高速发展&#xff0c;数据已成为企业的核心资产&#xff0c;驱动着业务决策、创新与市场竞争力。随着数据开发利用不断深入&#xff0c;常态化的数据流通不仅促进了信息的快速传递与共享&#xff0c;还能帮助企业快速响应市场变化&#xff0c;把握商业机遇&#xff0c;实…...

本地大模型编程实战(24)用智能体(Agent)实现智能纠错的SQL数据库问答系统(3)

本文将实现这样一个 智能体(Agent) &#xff1a; 可以使用自然语言对 SQLite 数据库进行查询。即&#xff1a;用户用自然语言提出问题&#xff0c;智能体也用自然语言根据数据库的查询结果回答问题。增加一个自动对查询中的专有名词进行纠错的工具&#xff0c;这将明显提升查询…...

Apache DolphinScheduler系列1-单节点部署及测试报告

文章目录 整体说明一、部署环境二、版本号三、部署方案四、部署步骤4.1、上传部署包4.2、创建外部数据库4.3、修改元数据库配置4.4、上传MySQLl驱动程序4.5、初始化外部数据库4.6、启停服务4.7、访问页面五、常见问题及解决方式5.1、时间不一致5.2、异常终止5.3、大量日志5.4、…...

Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在互联网技术以日新月异之势迅猛发展的浪潮下&#xff0c;5G 通信技术的普及、云计算能力…...

LVS+Keepalived 高可用集群搭建

一、高可用集群&#xff1a; 1.什么是高可用集群&#xff1a; 高可用集群&#xff08;High Availability Cluster&#xff09;是以减少服务中断时间为目地的服务器集群技术它通过保护用户的业务程序对外不间断提供的服务&#xff0c;把因软件、硬件、人为造成的故障对业务的影响…...

跟着AI学vue第十二章

第十二章&#xff1a;技术引领与社区共建 在熟练掌握Vue开发技能&#xff0c;并将其与前沿技术融合应用后&#xff0c; 第十二章是一个更具使命感与影响力的阶段&#xff0c;着重于引领技术发展方向和为社区贡献力量。 1. 推动Vue技术创新与实践 探索前沿技术融合&#xff1…...

PydanticToolsParser 工具(tool call)把 LLM 生成的文本转成结构化的数据(Pydantic 模型)过程中遇到的坑

PydanticToolsParser 的作用 PydanticToolsParser 是一个工具&#xff0c;主要作用是 把 LLM 生成的文本转成结构化的数据&#xff08;Pydantic 模型&#xff09;&#xff0c;让代码更容易使用这些数据进行自动化处理。 换句话说&#xff0c;AI 生成的文本通常是自然语言&…...

python-leetcode-乘积最大子数组

152. 乘积最大子数组 - 力扣&#xff08;LeetCode&#xff09; class Solution:def maxProduct(self, nums: List[int]) -> int:if not nums:return 0max_prod nums[0]min_prod nums[0]result nums[0]for i in range(1, len(nums)):if nums[i] < 0:max_prod, min_prod…...

江协科技/江科大-51单片机入门教程——P[1-1] 课程简介P[1-2] 开发工具介绍及软件安装

本教程也力求在玩好单片机的同时了解一些计算机的基本概念&#xff0c;了解电脑的一些基本操作&#xff0c;了解电路及其元器件的基本理论&#xff0c;为我们学习更高级的单片机&#xff0c;入门IT和信息技术行业&#xff0c;打下一定的基础。 目录 1.课程简介 2.开发工具及…...