Как преобразовать номера ключей RSA в ключи, совместимые с OpenSSL?

Я хочу, чтобы иметь возможность генерировать частные / публичные ключи RSA только с JavaScript...

До сих пор я нашел http://www.hanewin.net/encrypt/rsa/rsa.htm, он включает в себя единственный генератор ключей Javascript RSA, который я нашел. Я создал обертки (изменяя код с демонстрационной страницы (см. Ссылку)), вот для ключей:

function genKeys() {
 rsaKeys(1024);
 var p=rsa_p;
 var q=rsa_q;
 var d=rsa_d;
 var u=rsa_u;
 var e=rsa_e;
 var pq=rsa_pq;

 return {"e": e, "p": p, "q": q, "pq": pq, "d": d, "u": u};
}

Проблема в том, что выходные данные даны как действительные числа (экспонента, модуль и т. Д.), Но мне нужен ключ в формате OpenSSL (вещь, закодированная в base64). Может кто-нибудь сказать мне, каков формат данных ключа OpenSSL, или даже лучше - как мне преобразовать ключ, сгенерированный с помощью кода с этого сайта, в ключ OpenSSL?

Я хочу использовать результат с pidcrypt (библиотека шифрования js) и ruby ​​/openssl...

Большое спасибо за любое предложение...

2 ответа

Решение

Формат открытого ключа OpenSSL определен PKCS # 1. Версия в кодировке Base64- это файл формата PEM, который является форматом ASN.1 BER в кодировке Base64.

ASN.1 не очень хороший формат для работы, но это должно быть возможно с достаточным количеством смазки для локтя...

Оформить заказ на JavaScript с открытым исходным кодом проекта Forge. У него есть методы для генерации ключей RSA и их экспорта в PEM (формат DER в кодировке base64, о котором вы говорите, который использует OpenSSL).

http://github.com/digitalbazaar/forge/blob/master/README

Другие вопросы по тегам