Это работает нормально, но мне нужно извлечь ключи "n", "e", "d", чтобы другое приложение могло шифровать и дешифровать сообщения. Было бы замечательно, если бы это было возможно без каких-либо сторонних библиотек, только собственный криптографический модуль NodeJS.
Прежде всего, модуль n, показатель e publi c и частный показатель d это не ключи, это компоненты, которые используются для создания ключа. Поскольку ключ RSA содержит как минимум двух компонентов, вам нужен какой-то метод, чтобы отличать guish их друг от друга. Вам нужна какая-то структура данных, которая разделяет компоненты, и это именно то, что обеспечивают спецификации PKCS # 1 ASN.1. Достаточно указать, что вы будете доставлять ключ RSA с использованием PKCS # 1 в формате PEM.
Закрытый ключ, как следует из названия, на самом деле не должен использоваться совместно. В конце концов, не существует такого понятия, как общий закрытый ключ. Ключи генерируются для одного указанного c объекта и обычно хранятся там, где они генерируются (возможно, исключая зашифрованное резервное копирование).
Если вы используете только n и d, вы, вероятно, пропустите все сгенерированные параметры CRT для закрытый ключ, что означает, что в лучшем случае операции ключа RSA не выполняются. В худшем случае реализация RSA чрезвычайно требовательна и не будет работать вообще.
Наконец, как правильно указывает документация, вы должны использовать 'spki'
в качестве выходного формата (ключ publi c как используется в сертификатах, называемых SubjectPublicKeyIdentifier
, указанными в стандартах X.509) и 'pkcs8'
, поскольку они содержат указание на используемый ключ type . Они, вероятно, лучше поддерживаются другими приложениями, чем PKCS # 1.
Если они не могут самостоятельно его декодировать, просто скопируйте base 64 на этот сайт (онлайн-декодер ASN.1) и скопируйте соответствующие значения. Порядок значений (для 'pkcs1'
) можно найти в стандарте PKCS # 1 .