你如何解析 PKCS1?

How do you parse PKCS1?

假设我有一个如下所示的 RSA-1024 密钥对:

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDlQmZUbHRpl9e9d1LmfUdXiV7UV1FZr2cHtTT4RwHWi1oMCJnZ
YEQQDDr76Qpow83CBqyEi8Ia4Fkvpb6XVekhNcCEAB/ac7UTHYJiB5aSE/zixiA1
pHpumlYt9RmItgPxNIv9DRRCTh0sr8Yqxv/85B1Z7bgaE5k5EGQPEi6i1QIDAQAB
AoGBAMzhciGwariTAjJIGMXy33bTRPPutLy5jBHPVu8qRfI9xtNKPHOPHERbKbtG
oA7QLWlgHXy2iVkLdainLpSAKj3Z6wNXv8plzfk7SIvC4OSgsEpWYUPBKCDBNRvd
HLGDmhUiXVgE1g9zAvG27ny+PPKilCcgo3Y//mUVJculig9hAkEA/+40B10YnTlt
Mj2XNi0u3pbWLnBT5DPm0+i2g8goKuhWXTpNGv9HKhtT1fouUsPvvb/HjS+hEgUH
bV1mqE99cwJBAOVSV4NBQvwbWcnU5i7TV6mKXhvHr4bOaENgk4MdNgVo6miZkiS5
T7kreSKrRmzrPJp22JtNhYtm7FmUsapczJcCQQCRLFZ5AtbugF+viv5WLeUTQC54
IyGDJem+tJerQwN961LqCSMpuDpu6RdyHjremeRJFxsjvCu6o/2ljMCpooV/AkEA
v0+MdpGxYkUnCPw19AaYcXZfwGk8hAgab2tYZN+vu5+lPxIvG7gFTIN6EXQ10pQF
AQ/48MchjASXVLx545h7jQJASe8x52j31Zr9t4yT3xItU3qfHdgJcNKHH2ICCTDS
QQ1dNxjufvP22lUey2Y1v6As0nFnxb2wFbqaH0EOORUOCQ==
-----END RSA PRIVATE KEY-----

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlQmZUbHRpl9e9d1LmfUdXiV7U
V1FZr2cHtTT4RwHWi1oMCJnZYEQQDDr76Qpow83CBqyEi8Ia4Fkvpb6XVekhNcCE
AB/ac7UTHYJiB5aSE/zixiA1pHpumlYt9RmItgPxNIv9DRRCTh0sr8Yqxv/85B1Z
7bgaE5k5EGQPEi6i1QIDAQAB
-----END PUBLIC KEY-----

格式是什么?? 我如何解析它以获得用于 RSA 的私钥 d 和 public 指数 e 和模数 n?

第一个格式记录在 PKCS#1 中。它是 RSAPrivateKey 结构的 DER 编码。

第二个格式记录在 RFC 5280. It is the DER-encoding of the SubjectPublicKeyInfo structure, though Java named their class that represents it X509EncodedKeySpec

当 DER 编码采用 base64 编码并包装在“BEGIN”和“END”行中时,结果通常被称为 PEM 格式,并在 this RFC.

中进行了描述

如何解析?找一个库来解析它,这些格式很复杂,而且这种解析器的错误由来已久。