2010-01-20 17 views
6

Erlang tiene una función de criptografía que genera claves privadas públicas (documentación copiada a continuación). Sin embargo, la documentación parece vaga y no puedo encontrar ningún código de ejemplo que describa cómo generar el número primo compartido o el generador. ¿Alguien puede publicar un ejemplo que genere un par de claves público/privado? ¡Gracias de antemano por cualquier ayuda!Generando un par de claves RSA con Erlang?

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

Tipos: DHParameters = [P, G] P, G = Mpint donde p es el número primo compartida y G es el generador compartido. PublicKey, PrivateKey = Mpint() Genera una PublicKey de Diffie-Hellman y una clave privada (si no se proporcionan).

+1

¿Conoces la diferencia entre RSA y Diffie-Hellman? –

+1

Podría ser útil si explicó por qué necesitaba un par de claves RSA. Sin ofender, pero si confundes RSA y DH, es posible que, sin saberlo, trates de utilizar un algoritmo de encriptación que no sea apropiado para tu aplicación. Quizás podamos sugerir uno que se ajuste mejor. – Tadmas

+0

Si solo quiere obtener un par de clave pública y clave privada para RSA, intente esto: 'crypto: generate_key (rsa, {1024, 3})' – beenotung

Respuesta

7

No se genera el número primo compartido o el generador para Diffie-Hellman. Ver:

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

los parámetros P y G se acordó de antemano por ambos lados. Utilizando la notación del artículo de Wikipedia, crypto:dh_generate_key se utiliza para los pasos 2 & 3 para generar a/A & b/B, y luego crypto:dh_compute_key se utiliza para los pasos 4 & 5 para calcular el secreto compartido s.

Para RSA, no conozco una función de biblioteca estándar que genere un par de claves pública/privada. Generar primos es un algoritmo bastante complicado de lo que recuerdo; Recomiendo encarecidamente que no intentes codificarlo tú mismo. Los pares de claves Diffie-Hellman no son adecuados para usar con RSA; son diferentes algoritmos destinados a diferentes propósitos.

Generalmente no necesita generar estos en tiempo de ejecución ya que puede reutilizar el par de claves. Puede usar cualquier cantidad de otras fuentes para generarlo realmente. (¿Quizás ssh-keygen funcionaría? Y siempre hay OpenSSL.) Para usar el par de claves que ha creado, usaría las funciones crypto:rsa_ public/private _ encrypt/decrypt.

2

Ver cutkey (https://github.com/yrashk/cutkey)

"cutkey es una aplicación de Erlang para la generación de claves RSA. Se implementa como un controlador de puerto que llama RSA_generate_key de OpenSSL en un hilo de la piscina asíncrono."

0

os: command ("openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits: 2048").

Cuestiones relacionadas