Как вы разбираете PKCS1? - PullRequest
1 голос
/ 20 июня 2020

Предположим, у меня есть пара ключей 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-----

Какой формат ?? Как мне проанализировать это, чтобы получить закрытый ключ d и publi c экспоненту e и модуль n для использования для RSA?

1 Ответ

2 голосов
/ 20 июня 2020

Формат для первого задокументирован в PKCS # 1 . Это DER-кодирование структуры RSAPrivateKey.

Формат второго задокументирован в RF C 5280 . Это DER-кодирование структуры SubjectPublicKeyInfo, хотя Java назвал свой класс, который представляет его X509EncodedKeySpec.

Когда кодировка DER закодирована в base64 и заключена в "BEGIN" и строки «КОНЕЦ» результат обычно считается отформатированным в формате PEM и описан в this RF C.

Как его разобрать? Найдите библиотеку для его анализа, эти форматы сложны, и в таких парсерах имеется долгая история ошибок.

...