(PKCS1)RSA公私钥pem文件解析

news/2024/7/12 3:45:03 标签: https, 安全, ssl

1概述

在公钥密码学(也称为 非对称密码术)中,加密机制依赖于两个相关的密钥,一个公钥和一个私钥。公钥用于加密消息,而只有私钥的所有者才能解密消息。

在本教程中,我们将了解如何从 PEM 文件中读取公钥和私钥。

首先,我们将研究有关公钥密码学的一些重要概念。然后,我们将学习如何解析 PEM 文件。

2概念

在开始之前,让我们先了解一些关键概念。

X.509 是定义公钥证书格式的标准。 因此,这种格式描述了其他信息中的公钥。

DER是最流行的编码格式,用于在文件中存储 X.509 证书、PKCS8 私钥等数据。这是一种二进制编码,无法使用文本编辑器查看生成的内容。

PKCS8是用于存储私钥信息的标准语法。可以选择使用对称算法对私钥进行加密。

该标准不仅可以处理 RSA 私钥,还可以处理其他算法。PKCS8 私钥通常通过 PEM 编码格式进行交换。

PEM是 DER 证书的 base-64 编码机制。PEM 还可以对其他类型的数据进行编码,例如公钥/私钥和证书请求。

PEM 文件还包含描述编码数据类型的页眉和页脚,举例如下:

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

...Base64 encoding of the DER encoded certificate...

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

3解析PEM证书

示例证书:

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

MIICXAIBAAKBgQDnsN1F66mF6h6y/XpyN+ZU/w5AyeWBjZNIqi33/ATn4qQpw+kD

HrKyF7sQ/RNw6tibM90iM6VOA14305umPbPROJJs3JoB6Lao74SUm58aO9T+Ct7r

O52E+3r5jyDQicdRl6lIhLigNADXPD/KoNwfrRrCyw4wTHMZhSHc8eUHeQIDAQAB

AoGABVTIgqddiztL4Yp7ms02e5Yy2cLLiSOc0/s2e5JM+pj4dg2P+wZlzjtFjqqE

HAELYubam8LcduMU8+vmlPiufoK9fo47fLsX1PFCY9TDKL1dFlZgBAmJU7hR27h/

gCo4r3PMub/snq7n+skrbarZbX1J6Q1o5UYKFIrrIjNObEECQQD0DIzIdMObPUUu

W+JXg10kz/ayYn3irxZmp5ngc+b9WZfSOPehZBsLWsIb1eC7y9DZMhZfBQ/sPaO8

0tvqJMUFAkEA8wlj3B3zK20pK+Hj+vFiAlaQmqILTSfv/9jMm8tbVfXt+bHrmZdN

jruGVQDb7V2pW9HeG5PgDB3vKXeOiVfC5QJAYikKFzaf1rj2ModSqtBzjnL3Txi+

eYbjA7c19UmpBw4aOrwfHhMdrZt7p6aHFgIMps+2n9Fxbhv8194YBj1z4QJAPONW

XFg4iuGvVeoi9sSwvEs5sTP1xt/BlgSXxlRdTpztgQgdMX6hlKfQkM1FTCOSAYoD

rj8O+5ooR+hHEoulLQJBAOtaMvMWIOG7mARngpwqfJ07L41/T0ITHteiiYJfCurz

kLVCx1XA3MlN+u5gn7osUHMbah0Ze3uakSZ6za3mL5Y=

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

解析:

  1. 删除页眉、页脚和新行
  2. 将 Base64 编码的字符串解码为其对应的二进制格式。 

解析之后的16进制数据:

3082025C02010002818100E7B0DD45EBA985EA1EB2FD7A7237E654FF0E40C9E5818D9348AA2DF7FC04E7E2A429C3E9031EB2B217BB10FD1370EAD89B33DD2233A54E035E37D39BA63DB3D138926CDC9A01E8B6A8EF84949B9F1A3BD4FE0ADEEB3B9D84FB7AF98F20D089C75197A94884B8A03400D73C3FCAA0DC1FAD1AC2CB0E304C73198521DCF1E5077902030100010281800554C882A75D8B3B4BE18A7B9ACD367B9632D9C2CB89239CD3FB367B924CFA98F8760D8FFB0665CE3B458EAA841C010B62E6DA9BC2DC76E314F3EBE694F8AE7E82BD7E8E3B7CBB17D4F14263D4C328BD5D16566004098953B851DBB87F802A38AF73CCB9BFEC9EAEE7FAC92B6DAAD96D7D49E90D68E5460A148AEB22334E6C41024100F40C8CC874C39B3D452E5BE257835D24CFF6B2627DE2AF1666A799E073E6FD5997D238F7A1641B0B5AC21BD5E0BBCBD0D932165F050FEC3DA3BCD2DBEA24C505024100F30963DC1DF32B6D292BE1E3FAF1620256909AA20B4D27EFFFD8CC9BCB5B55F5EDF9B1EB99974D8EBB865500DBED5DA95BD1DE1B93E00C1DEF29778E8957C2E5024062290A17369FD6B8F6328752AAD0738E72F74F18BE7986E303B735F549A9070E1A3ABC1F1E131DAD9B7BA7A68716020CA6CFB69FD1716E1BFCD7DE18063D73E102403CE3565C58388AE1AF55EA22F6C4B0BC4B39B133F5C6DFC1960497C6545D4E9CED81081D317EA194A7D090CD454C2392018A03AE3F0EFB9A2847E847128BA52D024100EB5A32F31620E1BB980467829C2A7C9D3B2F8D7F4F42131ED7A289825F0AEAF390B542C755C0DCC94DFAEE609FBA2C50731B6A1D197B7B9A91267ACDADE62F96

解析数据:

3082025C# 标签头,类型为SEQUENCE (sequence 序列),此标签头共 4 字节。注(不确定):3082 应该指 私钥

#以下共 604 字节 (0x025c)

020100 # 整型 长度 为 0 (0x00),内容:version

028181 # 整型 长度 为 129 字节 (0x81),内容:模数 n (modulus)

00e7b0dd45eba985ea1eb2fd7a7237e654ff0e40c9e5818d9348aa2df7fc04e7e2a429c3e9031eb2b217bb10fd1370ead89b33dd2233a54e035e37d39ba63db3d138926cdc9a01e8b6a8ef84949b9f1a3bd4fe0adeeb3b9d84fb7af98f20d089c75197a94884b8a03400d73c3fcaa0dc1fad1ac2cb0e304c73198521dcf1e50779

0203 # 整型 长度 为 3 字节(0x03),内容:e (公钥指数)

010001

028180 # 整型 长度 为 128 字节(0x80),内容:d (私钥指数)

0554c882a75d8b3b4be18a7b9acd367b9632d9c2cb89239cd3fb367b924cfa98f8760d8ffb0665ce3b458eaa841c010b62e6da9bc2dc76e314f3ebe694f8ae7e82bd7e8e3b7cbb17d4f14263d4c328bd5d16566004098953b851dbb87f802a38af73ccb9bfec9eaee7fac92b6daad96d7d49e90d68e5460a148aeb22334e6c41

0241 # 整型 长度 为 65 字节(0x41),内容:p (素数)

00f40c8cc874c39b3d452e5be257835d24cff6b2627de2af1666a799e073e6fd5997d238f7a1641b0b5ac21bd5e0bbcbd0d932165f050fec3da3bcd2dbea24c505

0241 # 整型 长度 为 65 字节(0x41),内容:q (素数)

00f30963dc1df32b6d292be1e3faf1620256909aa20b4d27efffd8cc9bcb5b55f5edf9b1eb99974d8ebb865500dbed5da95bd1de1b93e00c1def29778e8957c2e5

0240 # 整型 长度 为 64 字节(0x40),内容:d mod(p-1)

62290a17369fd6b8f6328752aad0738e72f74f18be7986e303b735f549a9070e1a3abc1f1e131dad9b7ba7a68716020ca6cfb69fd1716e1bfcd7de18063d73e1

0240 # 整型 长度 为 64 字节(0x40),内容:d mod(q-1)

3ce3565c58388ae1af55ea22f6c4b0bc4b39b133f5c6dfc1960497c6545d4e9ced81081d317ea194a7d090cd454c2392018a03ae3f0efb9a2847e847128ba52d

0241 # 整型 长度 为 65 字节(0x41),内容:(1/q)mod p <即 (q**-1)mod p>

00eb5a32f31620e1bb980467829c2a7c9d3b2f8d7f4f42131ed7a289825f0aeaf390b542c755c0dcc94dfaee609fba2c50731b6a1d197b7b9a91267acdade62f96

通过上面解析可以获取到证书中的RSA密钥。


http://www.niftyadmin.cn/n/947530.html

相关文章

摘要算法和加密算法区别

一、摘要算法 摘要算法只能用于对数据的单项运算&#xff0c;无法还原被摘要源数据&#xff0c;其特点为定长输出、雪崩效应&#xff08;少量消息位的变化会引起信息摘要的许多位变化&#xff09;。摘要算法有三个特性&#xff0c;一是不可逆&#xff0c;即无法从摘要算法的输出…

LKCOS权限说明(一):概念介绍

芯片权限是标准COS指令类芯片在应用中非常重要的一部分。接下来会采用连载的方式为大家介绍LKCOS芯片的权限说明&#xff0c;以及获取权限的相应方法。 概念介绍 芯片安全状态寄存器Z&#xff1a;标准COS芯片安全状态寄存器Z值范围为&#xff08;0~F&#xff09; 16种值&#…

LKCOS权限说明(二):建立、擦除、增加权

1、建立权/擦除权 MF主文件、DF目录文件创建时需要填写 “建立权”和 “擦除权”&#xff0c; 表示在MF或DF目录文件下是否有权限创建文件和擦除文件。&#xff08;注意此处的擦除是指擦除MF下的文件&#xff0c;MF文件本身一旦建立不可擦除&#xff09; Eg1. 80E0 3F00 0D 3…

LKCOS权限说明(三):读写权、使用权、修改权

1、读写权 EF文件&#xff08;二进制、记录文件等&#xff09; 主要用于存储数据&#xff0c;其在创建时需要填写“读权限”和“写权限”&#xff0c;用于控制文件的读写操作。 Eg1. 80E0 0001 07 280050F0F0FFFF Eg2. 80E0 0001 07 280050FA99FFFF 解释&#xff1a; Eg1.…

LKCOS权限说明(四):权限获取方式

之前几篇文章介绍了权限以及相应权限的含义&#xff0c;本部分主要介绍如何切换安全状态Z的值从而获取相应的操作权限。 外部认证获取权限介绍 外部认证密钥&#xff1a;39类型的3DES密钥。 再增加39类型密钥时会有一个“后续状态”的字节&#xff0c;该字节只有低4位有效。…

LKCOS权限说明(五):外部认证指令流

外部认证的含义是验证外部密钥是否合法&#xff0c;合法则修改芯片的安全状态。 加密芯片端&#xff1a;有一条00号39密钥。密钥值为11223344556677881122334455667788&#xff0c;后续状态字节为FA。 CPU端&#xff1a;移植3DES算法。同时预制一条3DES密钥&#xff0c;密钥值…

LKCOS安全芯片MAC计算方法简介(一):PBOC-MAC计算

该方法来源于PBOC标准。 命令安全报文中的MAC是使用命令的所有元素&#xff08;包括命令头和命令数据域中的数据&#xff09;来产生的。以保证命令连同数据能够正确完整地传送&#xff0c;并对发送方进行认证。 按照如下方式使用DEA加密方式产生MAC&#xff1a; 第一步 终端…

LKCOS安全芯片MAC计算方法简介(二):交易中的MAC计算

交易中的MAC计算使用此方法。计算方法分二步完成。先用指定密钥产生过程密钥&#xff0c;再用过程密钥计算MAC。 ED/EP交易中的MAC是使用不同交易指定的数据元序列来产生的。从而保证交易的安全性。按照如下方式使用过程密钥DEA算法产生MAC&#xff1a; 第一步 将一个8字节长…