pkcs1转pkcs8 php,openssl RSA密钥格式PKCS1和PKCS8相互转换

openssl 生成pkcs1格式的私钥,密钥长度2048位, (PKCS1)

openssl genrsa -out private.pkcs1.pem 2048

PKCS1私钥转换为PKCS8

openssl pkcs8 -topk8 -inform PEM -in private.pkcs1.pem -outform pem -nocrypt -out private.pkcs8.pem

逆过程:PKCS8格式私钥再转换为PKCS1格式

openssl rsa -in private.pkcs8.pem -out private.pkcs1.pem

从pkcs1私钥中生成pkcs8公钥

openssl rsa -in private.pkcs1.pem -pubout -out public.pkcs8.pem

从pkcs8私钥中生成pkcs8公钥

openssl rsa -in private.pkcs8.pem -pubout -out public.pkcs8.pem

pkcs8公钥转pkcs1公钥

openssl rsa -pubin -in public.pkcs8.pem -RSAPublicKey_out -out public.pkcs1.pem

pkcs1公钥转换为pkcs8公钥

openssl rsa -RSAPublicKey_in -in public.pkcs1.pem -pubout -out public.pkcs8.pem

openssl生成的RSA私钥, 与 ssh-keygen生成的私钥, 格式相同,但是公钥格式不相同

使用openssl genrsa工具产生公钥指数为3密钥对。

首先产生私钥,使用如下命令(因为默认的是2048位,因此这里没有传入key len):

openssl genrsa -out private.pkcs1.pem 2048

默认2048位, -3 表示公钥指数e=3的RSA2048密钥对,提高验证签名的效率

openssl genrsa -3 -out private.pkcs1.pem

从pkcs1私钥中生成pkcs8公钥

使用如下命令:openssl rsa -pubout -in private.pkcs1.pem -out public.pkcs8.pem

使用ssh-keygen将pkcs8公钥转换成ssh格式

ssh-keygen -i [-m key_format] [-f input_keyfile]

ssh-keygen -f public.pkcs8.pem -i -mPKCS8 > pub.pem

转换完成的 priv.pem 和 pub.pem 即为符合ssh-keygen格式的密钥对。

openssl rsa命令生成RSA Key时,有3种可选格式,分别为PEM,DER和NET, 通过-inform参数指定,默认为PEM。

DER: 原始的RSA Key按照ASN1 DER编码的方式存储

PEM: DER经过base64编码转换为PEM格式

NET: OpenSSL的帮助提示显示,NET是一个同老式的Netscape server和微软IIS .key文件兼容的格式

私钥:PEM –(convert)–> DER

openssl rsa -inform PEM -in Key0.pem -outform DER -out Key0.der

公钥:PEM –(convert)> DER

openssl rsa -inform PEM -in Key0_pub.pem -pubin -outform DER -out Key0_pub.der

注意: PEM是DER格式进行base64编码的格式,那PEM通过base64解码应为DER格式:

私钥:PEM –(base64 decode)–> DER

openssl base64 -d -in Key0.pem -out Key0.bin

公钥:PEM –(base64 decryption)–> DER

openssl base64 -d -in Key0_pub.pem -out Key0_pub.bin

DER转PEM格式

使用openssl rsa命令转换:

私钥:DER –(convert)–> PEM

openssl rsa -inform DER -in Key0.der -outform PEM -out Key0.PEM

公钥:DER –(convert)–> PEM

openssl rsa -inform DER -in Key0_pub.der -pubin -outform PEM -out Key0_pub.PEM

使用openssl base64命令转换:

私钥:DER –(encryption)–> PEM

openssl base64 -e -in Key0.der -out Key0.pem

公钥:DER –(encryption)–> PEM

openssl base64 -e -in Key0_pub.der -out Key0_pub.pem

openssl rsa命令 与 openssl base64命令,唯一不同:

后者Key0_pub.pem是通过openssl base64命令得到的文件,

丢失了”—–BEGIN PUBLIC KEY—–“和”—–END PUBLIC KEY—–“这两条注释信息

PEM转TXT格式

直接通过openssl rsa命令的-text参数输出可读的TXT格式:

私钥:PEM –> TXT

openssl rsa -inform PEM -in Key0.PEM -text -out Key0.txt

公钥:PEM –> TXT

openssl rsa -inform PEM -in Key0_pub.PEM -pubin -text -out Key0_pub.txt

注意: 转换为TXT的PEM文件需要包含”—–BEGIN PUBLIC KEY—–“和”—–END PUBLIC KEY—–“标记,没有这个标记转换会失败

TXT转PEM格式

openssl rsa -inform PEM -in Key1.txt -outform PEM -out Key1.pem

TXT文件最后的”—–BEGIN PUBLIC KEY—–“和”—–END PUBLIC KEY—–“部分就是PEM内容

注意: 输入格式和输出格式都需要指定为PEM格式。

为什么输入明明是txt文本,却需要指定为PEM格式呢?

打开Key1.txt文件看下文件格式,除了前面部分RSA Key的各种参数外,

在文件最后面还包含了一段由

“—–BEGIN RSA PRIVATE KEY—–“和”—–END RSA PRIVATE KEY—–“包含的部分。

因此工具在处理输入的TXT文件时,会识别并提取

“—–BEGIN RSA PRIVATE KEY—–“和”—–END RSA PRIVATE KEY—–“字符串中间的部分。

所以, 即使在TXT文件内输入其它的字符,openssl工具也可以正确提取,前提是”BEGIN”和”END”格式字符串内是一个完整的Key。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php上传同一张图片,两种php实现图片上传的方法_PHP

图片上传在项目中经常用到,几乎没有任何一个项目可以脱离图片或者是文件上传。本篇我在这向大家介绍两种常规的上传方式。(注:在这里我们仅仅是对功能的实现,不去做过多的前端的样式)一、利用form表单上传此种方式是最原始的上传方式&#xf…

用C语言实现中文到unicode码的转换

转自: http://blog.csdn.net/qq_21792169/article/details/50379275 源文件用不同的编码方式编写,会导致执行结果不一样 由于本人喜欢用Notepad编辑器,该编辑器的好处是小巧灵活,但是有几个地方做的不足,但是我都能够很好的采取相应的措施来…

java位运算求幂,程序员必学:快速幂算法

前阵子,有小伙伴在我B站的算法教程底下留言小伙伴们有任何疑问或者希望我解说任何内容,都可以在我的小我私家B站或民众号(xmg_mj)留言哦,我会尽我最大能力、只管抽时间去写文章\录视频来回应人人。关于快速幂实在快速幂相关的问题&#xff0c…

java过滤器

过滤器 1、Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头…

memory php 变量,php入门-变量

打印一串字符。echo PHP学到家,走到哪儿都不怕!;?>输出236的计算结果echo 236;?>.连接符echo "Good,"."morning!";?>注释//echo "欢迎同学们!";echo 12345;?>什么是变量$var "学PHP&quo…

假设检验

假设检验分参数假设和非参数假设。 假设 先假设原假设H0,对应的反面叫做备择假设H1。SAS一般沿用的规则是NEYMAN和PEARSON提出的:在控制犯第一类错误的原则下,是犯第二类错误的概率尽量小(即,原假设受到保护&#xff0…

jeesite在eclipse中部署

1:下载下来最新版本的jeesite,首先要在本地安装好maven运行环境 2:运行 bin/eclipse.bat 生成工程文件并下载jar依赖包 如果需要修改默认项目名,请打开pom.xml修改第7行artifactId,然后再执行eclipse.bat文件 3&…

php抖音关注列表,网页PHP抖音批量取消关注JS代码

在很多时候我们抖音关注的人太多,想要批量取消但是一个一个点击太麻烦了,如何解放双手批量取消关注呢?今天分享一段JS代码,可在线批量取消关注,需电脑才能操作。首先打开抖音创作服务平台登录:https://crea…

python 灰度改二值,Python Image 对验证码进行灰度和二值法处理 去掉边框

def binarizing(img, threashold):img img.convert("L") # 转灰度pixdata img.load()w, h img.sizefor y in range(h):for x in range(w):if pixdata[x, y] < threashold:pixdata[x, y] 0else:pixdata[x, y] 255return imgdef removeFrame(img, width)::para…

hadoop 2.7.3伪分布式安装

hadoop 2.7.3伪分布式安装 hadoop集群的伪分布式部署由于只需要一台服务器&#xff0c;在测试&#xff0c;开发过程中还是很方便实用的&#xff0c;有必要将搭建伪分布式的过程记录下来&#xff0c;好记性不如烂笔头。 hadoop 2.7.3 JDK 1.8.91 到Apache的官网下载hadoop的二进…

php 环境变量有什么用,什么是环境变量,Linux环境变量及作用

变量是计算机系统用于保存可变值的数据类型&#xff0c;我们可以直接通过变量名称来提取到对应的变量值。在 Linux 系统中&#xff0c;环境变量是用来定义系统运行环境的一些参数&#xff0c;比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。值得一提的是&#xff0c;L…

Web Api 转

GET&#xff1a;生到数据列表&#xff08;默认&#xff09;&#xff0c;或者得到一条实体数据 POST&#xff1a;添加服务端添加一条记录&#xff0c;记录实体为Form对象 PUT&#xff1a;添加或修改服务端的一条记录&#xff0c;记录实体的Form对象&#xff0c;记录主键以GET方式…

matlab 刻度非均匀控制,MATLAB 出一张好看的图

1、坐标轴的视点(viewpoint)&#xff1a;从哪个方向看整个坐标系统&#xff0c;这决定了坐标轴的方向和位置&#xff0c;通过view函数实现视点的设置&#xff1b;view([z y ])&#xff1a;(将坐标系统想象为一座房子&#xff0c;而自己是个会飞的天使&#xff0c;最初你在房子的…

weak_ptr打破环状引用

转自&#xff1a;http://blog.csdn.net/malong777/article/details/48974559 weak_ptr是一种不控制对象生存周期的智能指针&#xff0c;它指向一个shared_ptr管理的对象...它不会改变shared_ptr的引用计数——《C Primer .5th》。很明显&#xff0c;weak_ptr的特点是“弱引用”…

百度链接提交php获取状态码,新网站,在百度提交了首页链接,但是一直没有收录,也没有爬虫抓取,怎么回事呢?(悬赏1元) - 搜外SEO问答...

新站前期需要做哪些操作&#xff1a;1、上线前保证网站的内容已经有一定的丰富性&#xff0c;可供爬虫已经有20的主关键词相关的界面或文章&#xff0c;50为最佳。2、新站的标题不要堆彻关键词&#xff0c;以主关键词主关键词描述语句品牌词 这个类型的标题为最佳。3、标题中出…

使用 git-cherry-pick 迁移提交

参考 git-cherry-pick 后续补上

前端js模糊搜索(模糊查询)

1.html结构&#xff1a; <label for"searchShop" class"clear pos-a" style"top:17px;"> <input type"text" id"searchShop" placeholder"场所搜索"> <input type"but…

php代码审计思路,代码审计思路讨论

原标题&#xff1a;代码审计思路讨论前言首先感谢手电筒的建议&#xff0c;建议我从Bluecms来开始学习代码审计。感谢桑桑格&#xff0c;风哥的问题解答。文章主要是写下我自己在代码审计的时候所思所想。当然并不是太过严谨&#xff0c;也有可能存在错误。这里主要是写出了审计…

LinkedHashSet

特点: 有序 , 唯一 底层的数据结构为: 链表和哈希表 , 链表保证有序 , 哈希表保证唯一 import java.util.LinkedHashSet; public class Demo2_LinkedHashSet {/*** param args* LinkedHashSet* 底层是链表实现的,是set集合中唯一一个能保证怎么存就怎么取的集合对象* 因为是Has…

oracle如何自定义类型,Oracle 自定义类型

一、子类型这种类型最简单&#xff0c;类似类型的一个别名&#xff0c;主要是为了对常用的一些类型简单化&#xff0c;它基于原始的某个类型。如&#xff1a;有些应用会经常用到一些货币类型&#xff1a;number(16,2)。如果在全局范围各自定义这种类型&#xff0c;一旦需要修改…