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

79 Openssl3.0 RSA公钥加密数据

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.kler.cn/a/473520.html

相关文章:

  • Fastapi + vue3 自动化测试平台(2)--日志中间件
  • WordPress Crypto插件前台任意用户登录漏洞复现(CVE-2024-9989)(附脚本)
  • 学习第六十二行
  • <论文>什么是胶囊神经网络?
  • 使用java springboot 使用 Redis 作为限流工具
  • 使用 SQL 和表格数据进行问答和 RAG(7)—将表格数据(CSV 或 Excel 文件)加载到向量数据库(ChromaDB)中
  • MySql---进阶篇(十一)----游标,条件处理程序,存储函数
  • Bash语言的计算机基础
  • 【优选算法】Binary-Blade:二分查找的算法刃(下)
  • 一款FPGA芯片开发的核心板(EP4CE6核心板)
  • WebRTC 的优缺点详细解析
  • 怎麼在iPhone iOS(Wi-Fi/蜂窩數據)上查找IP地址?
  • vue js实现时钟以及刻度效果
  • HTML5 波动动画(Pulse Animation)详解
  • 微信小程序中使用weui组件库
  • 基于知识蒸馏的跨模态目标检测方法总结
  • 【问题记录】npm create vue@latest报错
  • 后勤管理系统|Java|SSM|VUE| 前后端分离
  • 系统分析师笔记
  • 上门按摩系统架构与功能分析