使用OpenSSL1.1.1中的libcrypto库进行RSA加密与解密数据

本文介绍了如何使用OpenSSL1.1.1的libcrypto库进行RSA加密和解密数据,包括如何生成公钥私钥文件、加密解密的限制及实现关键代码。需要注意的是,加密内容长度受限于密钥长度,且公钥加密必须用私钥解密,反之亦然。为了加密长数据,可以采用分段加密的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说, 直接说怎么写代码
编译的时候如何包含库文件这种事情就不说了.

第一步, 包含头文件.

#include <openssl/rsa.h>	// 既然是RSA加密该头文件肯定是需要的
#include <openssl/bn.h>		// 这个头文件用于RSA的公钥私钥生成中, 生成大数用的
#include <openssl/pem.h>	// 这个是用于将公钥私钥保存成pem文件用的
// 其它所需的头文件会被上述三个头文件自动包含, 比如bio.h

第二步, 生成公钥私钥文件
首先说明一下, 在RSA的私钥中, 既包含私钥信息也包含公钥信息
也就是说, 所谓的公钥, 其实就是私钥的一部分

要生成公钥私钥文件, 可是使用openssl的可执行文件openssl, 通过命令行的形式执行

# 生成私钥文件key.pem, 2048是密钥的位数
openssl genrsa -out key.pem 2048
# 基于私钥文件key.pem提取公钥文件key.pub.pem
openssl rsa -in key.pem -pubout -out key.pub.pem

除了上述使用工具, 也可以使用代码生成, 这里说一下代码生成的方法:

// 生成基本的RSA密钥数据很简单, 使用下面四句话即可
RSA* rsa = RSA_new();
BIGNUM* e = BN_new();
BN_set_word(e, 65537);	// 65537是官方推荐的一个数字, 其实任意素数都是可以的
RSA_generate_key_ex(rsa, 2048, e, 0)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值