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

相关文章

在C#中读取文件的六种主流方法详解

《在C#中读取文件的六种主流方法详解》在C#中读取文件有多种方法,不同方式适用于不同场景(小型文件、大型文件、文本文件或二进制文件),本文给大家介绍了6种主流方法以及其适用场景,需要的朋友可以参考下... 目录方法1:File.ReadAllText(读取整个文本文件)方法2:File.ReadAllLin

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu