Генерация пары ключей RSA с помощью Erlang? - PullRequest
7 голосов
/ 20 января 2010

Erlang имеет криптографическую функцию, которая генерирует открытые закрытые ключи (документация скопирована ниже). Однако документация кажется расплывчатой, и я не могу найти пример кода, который описывает, как создать общее простое число или генератор. Может кто-нибудь опубликовать пример, который генерирует пару открытый / закрытый ключ? Заранее спасибо за любую помощь!

dh_generate_key(DHParams) -> {PublicKey,PrivateKey} 
dh_generate_key(PrivateKey, DHParams) -> {PublicKey,PrivateKey} 

Типы: DHParameters = [P, G] P, G = Mpint Где P - общее простое число, а G - общий генератор. PublicKey, PrivateKey = Mpint () Создает Diffie-Hellman PublicKey и PrivateKey (если не указан).

Ответы [ 3 ]

7 голосов
/ 21 января 2010

Вы не генерируете общее простое число или генератор для Диффи-Хеллмана. См:

http://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange

Параметры P и G заранее согласованы обеими сторонами. Используя обозначения статьи в Википедии, crypto:dh_generate_key используется для шагов 2 и 3 для генерации a / A & b / B, а затем crypto:dh_compute_key используется для шагов 4 и 5 для вычисления общий секрет s.

Для RSA я не знаю стандартной функции библиотеки, которая генерирует пару открытый / закрытый ключ. Генерация простых чисел - довольно сложный алгоритм из того, что я помню; Я настоятельно рекомендую вам не пытаться кодировать это самостоятельно. Пары ключей Диффи-Хеллмана не подходят для использования с RSA; это разные алгоритмы, предназначенные для разных целей.

Как правило, вам не нужно генерировать их во время выполнения, поскольку вы можете повторно использовать пару ключей. Вы можете использовать любое количество других источников для его генерации. (Может быть, ssh-keygen будет работать? И всегда есть OpenSSL .) Чтобы использовать созданную пару ключей, вы должны использовать функции crypto:rsa_ public/private _ encrypt/decrypt.

2 голосов
/ 27 мая 2014

См. Ключ (https://github.com/yrashk/cutkey)

"cutkey - это приложение Erlang для генерации ключей RSA. Оно реализовано как драйвер порта, который вызывает ключ OpenSSL RSA_generate_key в потоке из асинхронный пул. "

1 голос
/ 27 июня 2017

команда os: ("openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits: 2048").

...