公钥语法为:

RSAPublicKey ::= SEQUENCE { 
modulus INTEGER, //RSA合数模n 
publicExponent INTEGER //RSA公开幂e 
}

说明:

1.此语法中的modulus和publicExponent,提取自对应私钥中的同名域值。

2.PKCS1和PKCS8的公钥文件是一样的,没有区别。

本文适用范围:已知公钥结构各域值,组装RSA公钥文件,即PEM文件。

PEM文件组成是TLV结构。

一、数据实例,各域值如下:

1.modulus: 
AB602562101207D05A6C413E24CE42699210388F5D31D28151E0FA9141D9C8F8 
AC716C0C4F449616AA2270F1007CF3BA46F05131E402266B2A628F4B70142429 
93F5BC06E3C0609F9E52BE8D5D0CFACF53C2EE98533A9818828EC5CB8120A688 
ADC603DBE65DF9059AD8039644897896943912D81C76856AB7E380C1530C6DE0 
E155D4C9FB943967C52EB147CDBF2464AC2B631055DBE3109491A067567AE515 
FD36428930FABCAC7C0FEB906C11815B6F00462E588DEB81C4364E2B62540E92 
69F49487CC4F8724DDC481C5134B86108C9FACD5D7187706ACA2D3425BFE4F11 
9C254273FA5C91EEA5EB06154936D27EE62266CDCAE9E34D20229360559325C7

2.publicExponent: 
00000003

二、组装PEM文件

1.按照以上数据域顺序依次组装成TLV。 
①modulus组装 
0282010100 
AB602562101207D05A6C413E24CE42699210388F5D31D28151E0FA9141D9C8F8 
AC716C0C4F449616AA2270F1007CF3BA46F05131E402266B2A628F4B70142429 
93F5BC06E3C0609F9E52BE8D5D0CFACF53C2EE98533A9818828EC5CB8120A688 
ADC603DBE65DF9059AD8039644897896943912D81C76856AB7E380C1530C6DE0 
E155D4C9FB943967C52EB147CDBF2464AC2B631055DBE3109491A067567AE515 
FD36428930FABCAC7C0FEB906C11815B6F00462E588DEB81C4364E2B62540E92 
69F49487CC4F8724DDC481C5134B86108C9FACD5D7187706ACA2D3425BFE4F11 
9C254273FA5C91EEA5EB06154936D27EE62266CDCAE9E34D20229360559325C7

说明: 
02 - tag 
82 - 81代表长度用1byte表示,82代表长度用2byte表示(此字节部分tag后不存在) 
0101 - length 2bytes表示  
00 - 在modulus数据前添加00,原因未知,请知情道友告知。

②publicExponent组装: 
020103

说明: 
02 - tag 
01 - length 
03 - 00000003 在公钥组装中,舍弃0x00;私钥组装中,保留0x00

2.输出PEM文件 
①公钥PEM文件头,嵌套多层TLV,本实例文件头为: 
30820120 300d06092a864886f70d0101010500 0382010d 0030820108

说明: 
30820120 
30 - tag 
82 - 代表length由2bytes表示 
0120 - length (2bytes)

30 0d 06092a864886f70d0101010500 
30 - tag 
0d - length 
06092a864886f70d0101010500 - value

03 82 010d 
03 - tag 
82 - 代表length由2bytes表示 
010d - value (2bytes),代表长度

00 3082 0108 
00 - 补0x00,原因未知,请知悉者不吝赐教 
30 - tag 
82 - 代表length由2bytes表示 
0108 - value(2bytes),代表长度。

②依次输出以上组装后的数据到PEM文件。

至此,PEM文件已生成。 
本文实例数据对应PEM文件,如图: 

对此PEM文件进行Base64编码,即得到RSA公钥: 
—–BEGIN PUBLIC KEY—– 
MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAq2AlYhASB9BabEE+JM5CaZIQOI9dMdKB 
UeD6kUHZyPiscWwMT0SWFqoicPEAfPO6RvBRMeQCJmsqYo9LcBQkKZP1vAbjwGCfnlK+jV0M+s9T 
wu6YUzqYGIKOxcuBIKaIrcYD2+Zd+QWa2AOWRIl4lpQ5EtgcdoVqt+OAwVMMbeDhVdTJ+5Q5Z8Uu 
sUfNvyRkrCtjEFXb4xCUkaBnVnrlFf02Qokw+rysfA/rkGwRgVtvAEYuWI3rgcQ2TitiVA6SafSU 
h8xPhyTdxIHFE0uGEIyfrNXXGHcGrKLTQlv+TxGcJUJz+lyR7qXrBhVJNtJ+5iJmzcrp400gIpNg 
VZMlxwIBAw== 
—–END PUBLIC KEY—–

转载自:http://blog.csdn.net/xuanshao_/article/details/51679824

RSA公钥文件(PEM)解析相关推荐

  1. (PKCS1) RSA 公私钥 pem 文件 提取 公私钥 e d 和 模数 n

    参考链接:RSA公钥文件(PEM)解析 参考链接:OPENSSL中RSA私钥文件(PEM格式)解析[一] 参考:使用openssl命令剖析RSA私钥文件格式 RSA PKCS8 与 PKCS1 公私钥 ...

  2. RSA私钥文件(PEM-PKCS#1)解析

    在PKCS#1 RSA算法标准中定义RSA私钥语法 RSAPrivateKey ::= SEQUENCE {  version Version, //版本  modulus INTEGER, // R ...

  3. (一)--使用RSA公钥证书解密

    最近要用rsa的公钥解密,这个公钥存储在公钥证书里面,这个公钥证书呢- 安装在了windows操作系统里.以下是讲解部分,如果不想看的直接跳跃到最末尾的代码部分. 公钥–>公钥证书–>公钥 ...

  4. 小王的尴尬日常(一)--使用RSA公钥证书解密

    最近接了一个活,要用rsa的公钥解密,这个公钥存储在公钥证书里面,这个公钥证书呢- 安装在了windows操作系统里.以下是讲解部分,如果不想看的直接跳跃到最末尾的代码部分. 公钥–>公钥证书– ...

  5. 非对称加密算法RSA公钥私钥的模数和指数提取方法

    生成非对称加密算法RSA公钥.私钥的方法: 1. 通过OpenSSL库生成,可参考  https://github.com/fengbingchun/OpenSSL_Test/blob/master/ ...

  6. python rsa 公钥解密_python利用rsa库做公钥解密的方法教程

    前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...

  7. java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...

    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...

  8. 使用OpenSSL加密,使用Java解密,使​​用OpenSSL RSA公钥

    抽象 在2017年,我撰写了一个由三部分组成的系列文章,内容涉及选择最佳的哈希和加密算法. 在对该系列进行研究时,我学到了很多有关哈希和加密的知识. 我学到的最重要的事情是,尽管我必须对如何使用最安全 ...

  9. python rsa 公钥解密_python使用rsa库做公钥解密(网上别处找不到)

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/8013009.html 作者:窗户 Q ...

最新文章

  1. AutoCAD.NET API 最新(2012)教程下载及在线视频教程DevTV 第8讲 用户界面
  2. RocketMQ-控制台的安装与启动
  3. 第一周 第二天的linux学习
  4. docker常用参数详解,docker run常用参数详解(精)
  5. CVPR 2021 目标检测、跟踪和姿态估计最新进展分享
  6. Xendesktop 5.0与view 4.5对比的看法
  7. idea找不到或无法加载主类问题解决
  8. 视频消重软件大全 视频md5修改器哪个好用
  9. 魔兽世界服务端linux,LightsHope/vMangos – 基于Ubuntu服务器的WOW私服搭建教程
  10. Windows远程桌面如何设置分辨率
  11. hdu5294Tricks Device【最短路+网络流】
  12. 重磅报告 | 《中国企业2020:人工智能应用实践与趋势》
  13. 没学历可以学IT吗?
  14. com.sec.android.ofvi,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
  15. 云队友丨在注意力稀缺的时代,专注是你成败的关键筹码
  16. jQuery框架的介绍以及基本用法--操作dom
  17. 蒸妙集团把中药熏蒸以现代科技结合中医古法用于疏通身体的“堵”
  18. 【Python】照片扩展信息提取
  19. 解决XWPFRun的addPicture方法无法显示图片的问题
  20. 云周刊】第177期:马云见证!蚂蚁金服推出全球首个区块链跨境汇款服务

热门文章

  1. 未来的趋势发展 802.11v网络协议解析
  2. SQL Server 2012从零开始学pdf
  3. DOM查找元素的方法总结
  4. 用css、html编写一个两列布局的网页,名称为css.html ,要求左侧宽度为200px ,右侧自动扩展...
  5. WebClient 上传文件
  6. Kneser猜想与相关推广
  7. SQL的经典语句(太全了)
  8. 牛客15666 又见斐波那契(矩阵快速幂)
  9. slow log php,善用php-fpm的慢执行日志slow log,分析php性能问题
  10. sql加上唯一索引后批量插入_MySQL当批量插入遇上唯一索引