openssl 从pem中读取秘钥

2024-03-01 17:18
文章标签 读取 秘钥 openssl pem

本文主要是介绍openssl 从pem中读取秘钥,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

openssl pem.h 中提供了关于pem格式密钥对的操作接口

通常使用.pem的格式文件来保存openssl 生成的密钥对;

在终端下 cat xxx.pem 可以看到 

-----BEGIN RSA PRIVATE KEY-----

XXXX

-----END RSA PRIVATE KEY-----

密钥数据进行了BASE64编码

1. 示例:将生成的密钥对保存成pem文件

 

void testWriteRSA2PEM()
{//生成密钥对RSA *r = RSA_new();int bits = 512;BIGNUM *e = BN_new();BN_set_word(e, 65537);RSA_generate_key_ex(r, bits, e, NULL);RSA_print_fp(stdout, r, 0);BIO *out;out = BIO_new_file("/Users/cocoajin/Desktop/opriv.pem","w");//这里生成的私钥没有加密,可选加密int ret = PEM_write_bio_RSAPrivateKey(out, r, NULL, NULL, 0, NULL, NULL);printf("writepri:%d\n",ret);BIO_flush(out);BIO_free(out);out = BIO_new_file("/Users/cocoajin/Desktop/opub.pem","w");ret = PEM_write_bio_RSAPublicKey(out, r);printf("writepub:%d\n",ret);BIO_flush(out);BIO_free(out);BN_free(e);RSA_free(r);}

 

 在目标路径保存了生成的公钥opub.pem和私钥oprov.pem

 输出日志

 View Code

 

2. 示例:从pem文件中获取公钥私钥方式一(利用了BIO)

 

void testReadRSAFromPEM()
{RSA *pubkey = RSA_new();RSA *prikey = RSA_new();BIO *pubio;BIO *priio;priio = BIO_new_file("/Users/cocoajin/Desktop/opriv.pem", "rb");prikey = PEM_read_bio_RSAPrivateKey(priio, &prikey, NULL, NULL);pubio = BIO_new_file("/Users/cocoajin/Desktop/opub.pem", "rb");pubkey = PEM_read_bio_RSAPublicKey(pubio, &pubkey, NULL, NULL);RSA_print_fp(stdout, pubkey, 0);RSA_print_fp(stdout, prikey, 0);RSA_free(pubkey);BIO_free(pubio);RSA_free(prikey);BIO_free(priio);}

 

 从目标路径读取公钥opub.pem和私钥opriv.pem

 输出日志

 View Code

 

3. 示例:从pem文件中读取公钥私钥方式二(利用FILE)

 

void testPEMReadRSA()
{RSA *pubkey = RSA_new();RSA *prikey = RSA_new();FILE *pubf = fopen("/Users/cocoajin/Desktop/opub.pem", "rb");pubkey = PEM_read_RSAPublicKey(pubf, &pubkey, NULL, NULL);FILE *prif = fopen("/Users/cocoajin/Desktop/opriv.pem", "rb");prikey = PEM_read_RSAPrivateKey(prif, &prikey, NULL, NULL);RSA_print_fp(stdout, pubkey, 0);RSA_print_fp(stdout, prikey, 0);fclose(pubf);fclose(prif);RSA_free(pubkey);RSA_free(prikey);}

 

 输出日志 

 View Code

 

4. 在终端下使用openssl命令生成公钥私钥

 

//生成1024位的RSA私钥
openssl genrsa -out private.pem 1024//再由私钥生成公钥
openssl rsa -in private.pem -pubout -out public.pem//私钥文件private.pem
//公钥文件public.pem
//上面私钥是没加密的,可选加密,指定一个加密算法生成时输入密码

 

 

以上测试使用openssl 1.1.0c

参考:https://www.openssl.org/docs/man1.1.0/crypto/PEM_read_bio_RSAPublicKey.html

这篇关于openssl 从pem中读取秘钥的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/763208

相关文章

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

Python读取TIF文件的两种方法实现

《Python读取TIF文件的两种方法实现》本文主要介绍了Python读取TIF文件的两种方法实现,包括使用tifffile库和Pillow库逐帧读取TIFF文件,具有一定的参考价值,感兴趣的可以了解... 目录方法 1:使用 tifffile 逐帧读取安装 tifffile:逐帧读取代码:方法 2:使用

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

argodb自定义函数读取hdfs文件的注意点,避免FileSystem已关闭异常

一、问题描述 一位同学反馈,他写的argo存过中调用了一个自定义函数,函数会加载hdfs上的一个文件,但有些节点会报FileSystem closed异常,同时有时任务会成功,有时会失败。 二、问题分析 argodb的计算引擎是基于spark的定制化引擎,对于自定义函数的调用跟hive on spark的是一致的。udf要通过反射生成实例,然后迭代调用evaluate。通过代码分析,udf在

下载/保存/读取 文件,并转成流输出

最近对文件的操作又熟悉了下;现在记载下来:学习在于 坚持!!!不以细小而不为。 实现的是:文件的下载、文件的保存到SD卡、文件的读取输出String 类型、最后是文件转换成流输出;一整套够用了; 重点: 1:   操作网络要记得开线程; 2:更新网络获取的数据 切记用Handler机制; 3:注意代码的可读性(这里面只是保存到SD卡,在项目中切记要对SD卡的有无做判断,然后再获取路径!)

ROS1 + Realsense d455 固件安装+读取rostopic数据

目录 安装固件(一定要匹配)ROS1 wrapper 安装方法Realsense SDK 安装方法Realsense Firmware 安装方法 修改roslaunch配置文件,打开双目图像和IMU数据其他坑点参考链接 安装固件(一定要匹配) 如果你是使用ROS1获取realsense数据的话,一定要注意,SDK, Firmware的版本不是越新越好!!,这是因为intel已经不

Python批量读取身份证信息录入系统和重命名

前言 大家好, 如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。 实现过程概述: 模块与功能: re 模块:用于从 OCR 识别出的文本中提取所需的信息。 日期模块:计算年龄。 pandas:处理和操作表格数据。 PaddleOCR:百度的

java读取resource/通过文件名获取文件类型

java读取resource java读取resource目录下文件的方法: 借助Guava库的Resource类 Resources.getResource("test.txt") 通过文件名获取文件类型 mongodb java