Как преобразовать номера ключей 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).