79 Openssl3.0 RSA公钥加密数据

embedded/2025/1/13 2:37:21/

1 引言

        最近不小心用到了openssl3.0,项目中需要使用rsa非对称加解密算法,所以把openssl3.0使用公钥加密数据的函数调用摸了一遍。

        之所以记录此篇文章,是因为网络上大多数是openssl3.0以前的版本的函数接口,而openssl3.0之后已经丢弃了很多旧接口了,导致我网上搜索例程的时候,不是很顺利(看到的基本都是旧接口不能用),因此特此记录。

2 实验

        废话少说,直接上代码:

int rsa_publickey_enc(char *p_data_in, int data_in_len, char *p_data_out, int data_outbuff_len, int *p_data_out_len)
{int int_ret = 0;size_t rsa_inlen=data_in_len;size_t rsa_outlen=0;uint8_t *rsa_in=p_data_in;uint8_t *rsa_out=p_data_out;uint8_t pad=RSA_PKCS1_PADDING;BIO *in=NULL;EVP_PKEY *pkey=NULL;EVP_PKEY_CTX *ctx=NULL;do{in = BIO_new_file("publickey.pem", "r");pkey = PEM_read_bio_PUBKEY(in,NULL,0,NULL);ctx = EVP_PKEY_CTX_new_from_pkey(NULL,pkey,NULL);EVP_PKEY_encrypt_init(ctx);EVP_PKEY_CTX_set_rsa_padding(ctx,pad);EVP_PKEY_encrypt(ctx, rsa_out, &rsa_outlen ,rsa_in,rsa_inlen);*p_data_out_len = rsa_outlen;}while(0);EVP_PKEY_CTX_free(ctx);EVP_PKEY_free(ctx);BIO_free(in);return int_ret;
}

至于上述代码返回值得判断啥的,我就没有判断了(注意:实际使用时请按编码规范编程)。

以上,over!


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

相关文章

如何在应用或系统中正确解析和渲染淘宝商品详情API接口返回的HTML内容?

选择合适的编程语言和工具 后端语言: 如果是在后端处理,像 Python 有许多库可以帮助解析 HTML。例如,BeautifulSoup是一个功能强大且易于使用的 HTML 解析库。首先需要安装BeautifulSoup,可以使用pip install beautifulsoup4命令进…

服务器登陆后有java变量

需求:在ssh服务器后,用户root 使用java会报错,没有这个变量,其实环境变量中已经有配置了,在/etc/profile 中有写变量及地址,通过source /etc/profile 命令也可以使环境变量加载上,但是ssh后不会…

jenkins入门13--pipeline

Jenkins-pipeline(1)-基础 为什么要使用pipeline 代码:pipeline 以代码的形式实现,通过被捡入源代码控制, 使团队能够编译,审查和迭代其cd流程 可连续性:jenkins 重启 或者中断后都不会影响pipeline job 停顿&#x…

vue项目封装api接口事项

vue项目封装api准备 vue项目vue项目目录对应的src文件夹 vue项目 本项目只提及一些修改的细节,如有错误,可在评论区指出交流。 vue项目目录对应的src文件夹 本章节针对src文件夹下操作: 封装api,需要先创建请求的request.js文件&#xff0…

MAX3232芯片介绍

MAX3232 是一个常用的 串口电平转换芯片,通常用于 RS-232串口通信 中。它的主要作用是将 RS-232 的 电平信号 转换为 TTL电平信号,使其能够与微控制器(如Arduino、STM32、Raspberry Pi等)等设备兼容。 为什么需要 MAX3232&#x…

在php中,Fiber、Swoole、Swow这3个协程都是如何并行运行的?

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…

快速实现一个快递物流管理系统:实时更新与状态追踪

物流管理是电商、仓储和配送等行业的重要组成部分。随着电子商务的快速发展,快递物流的高效管理和实时状态更新变得尤为关键。本文将演示如何使用Node.js、Express、MongoDB等技术快速构建一个简单的快递物流管理系统,该系统支持快递订单的实时更新和追踪…

软考信安19~操作系统安全保护

1、操作系统安全概述 1.1、操作系统安全概念 操作系统的安全是指满足安全策略要求,具有相应的安全机制及安全功能,符合特定的安全标准,在一定约束条件下,能够抵御常见的网络安全威胁,保障自身的安全运行及资源安全。 《信息安全技术操作系统安全技术要求(GB/T 20272—2…