openssl下aes128算法xts模式加解密运算实例

embedded/2025/3/4 17:15:11/

xts_0">aes128算法xts接口

加密


int openssl_aes128_encrypt_xts(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
{int len = 0;// 创建并初始化加密上下文EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();if (!ctx) {perror("EVP_CIPHER_CTX_new failed");return -1;}printf("%s %d\n", __func__, __LINE__);// 初始化加密操作(AES-256-XTS模式)if (1 != EVP_EncryptInit_ex(ctx, EVP_aes_128_xts(), NULL, NULL, NULL)) {perror("EVP_EncryptInit_ex failed for AES-XTS mode");return -1;}// 设置密钥和 IV(AES-XTS模式)if (1 != EVP_EncryptInit_ex(ctx, NULL, NULL, key, iv)) {perror("EVP_EncryptInit_ex failed for key and IV");return -1;}if (1 != EVP_EncryptUpdate(ctx, out_buf, &len, in_buf, in_len)) {perror("EVP_EncryptUpdate failed");return -1;}// 记录加密输出的长度*out_len = len;// 完成加密if (1 != EVP_EncryptFinal_ex(ctx, out_buf + len, &len)) {perror("EVP_EncryptFinal_ex failed");return -1;}*out_len += len;// 输出密文
//    printf("Ciphertext: ");
//    data_dump(out_buf, *out_len);// 清理上下文EVP_CIPHER_CTX_free(ctx);return 0;
}

解密


int openssl_aes128_decrypt_xts(unsigned char *key,unsigned char *iv, unsigned char *in_buf, int in_len, unsigned char *out_buf,int* out_len)
{int ret = 0;EVP_CIPHER_CTX* ctx = NULL;ctx = EVP_CIPHER_CTX_new();printf("%s %d\n", __func__, __LINE__);EVP_DecryptInit_ex(ctx, EVP_aes_128_xts(), NULL, key, iv);if (!EVP_DecryptUpdate(ctx, out_buf, out_len, in_buf, in_len)){EVP_CIPHER_CTX_free(ctx);return -1;}int tmplen = 0;ret = EVP_DecryptFinal_ex(ctx, out_buf + *out_len, &tmplen);if (ret){//        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;
}

http://www.ppmy.cn/embedded/169974.html

相关文章

R 语言科研绘图第 29 期 --- 密度图-山脊线

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…

网络通信库

服务端和客户端 1.建立连接。服务端对接多个客户端,用连接池(对象池)优化 2.收发消息,类和对象通过序列化和反序列化程二进制来通信 3.其他库函数 1.信号量 2.原子操作 -- 3.SocketAsyncEventArgs SocketAsyncEventArgs是一…

Python 绘制迷宫游戏,自带最优解路线

1、需要安装pygame 2、上下左右移动,空格实现物体所在位置到终点的路线,会有虚线绘制。 import pygame import random import math# 迷宫单元格类 class Cell:def __init__(self, x, y):self.x xself.y yself.walls {top: True, right: True, botto…

探秘基带算法:从原理到5G时代的通信变革【一】引言

文章目录 一、引言1.1 研究背景与意义1.2 研究目的与方法1.3 研究内容与创新点 本博客为系列博客,主要讲解各基带算法的原理与应用,包括:viterbi解码、Turbo编解码、Polar编解码、CORDIC算法、CRC校验、FFT/DFT、QAMtiaozhi/解调、QPSK调制/解…

51c自动驾驶~合集52

我自己的原文哦~ https://blog.51cto.com/whaosoft/13383340 #世界模型如何推演未来的千万种可能 驾驶世界模型(DWM),专注于预测驾驶过程中的场景演变,已经成为追求自动驾驶的一种有前景的范式。这些方法使自动驾驶系统能够更…

Tailwind CSS 问题:npm error could not determine executable to run

问题与处理策略 问题描述 npx tailwindcss init -p在使用 Tailwind CSS 的前端项目中,执行上述指令,即初始化 Tailwind CSS 时,报如下错误 npm error could not determine executable to run# 报错npm 错误无法确定要运行的可执行文件问题…

【Python】基础知识四

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解Python的字典、文件。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自:Pyt…

在CentOS 7上安装和配置Nginx

引言 Nginx是一款高性能的HTTP和反向代理服务器。本文将详细介绍如何在CentOS 7系统上安装、配置以及管理Nginx服务。 一、安装Nginx 步骤1:下载并添加Nginx YUM源 首先,为您的系统添加Nginx官方提供的YUM源: wget http://nginx.org/pac…