2010-01-20 16 views
6

Erlang ha una funzione di crittografia che genera chiavi private pubbliche (documentazione copiata di seguito). Tuttavia la documentazione sembra vaga e non riesco a trovare alcun codice di esempio che descriva come generare il numero primo condiviso o il generatore. Qualcuno può pubblicare un esempio che genera una coppia di chiavi pubblica/privata? Grazie in anticipo per qualsiasi aiuto!Generazione di una coppia di chiavi RSA con Erlang?

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

Tipi: DHParameters = [P, G] P, G = Mpint dove p è il numero primo condivisa e G è il generatore comune. PublicKey, PrivateKey = Mpint() Genera un PublicKey Diffie-Hellman e PrivateKey (se non specificato).

+1

Conoscete la differenza tra RSA e Diffie-Hellman? –

+1

Potrebbe aiutare se hai spiegato perché hai bisogno di una coppia di chiavi RSA. Senza offesa, ma se confondi RSA e DH, potresti tentare inconsapevolmente di utilizzare un algoritmo di crittografia non appropriato per la tua applicazione. Forse possiamo suggerirne uno che si adatta meglio. – Tadmas

+0

Se si desidera ottenere solo una coppia di chiave pubblica e chiave privata per RSA, provare questo: 'crypto: generate_key (rsa, {1024, 3})' – beenotung

risposta

7

Non si genera il numero primo condiviso o il generatore per Diffie-Hellman. Vedere:

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

I parametri P e G sono d'accordo a prima del tempo da entrambe le parti. Utilizzando la notazione di questo articolo Wikipedia, crypto:dh_generate_key è usato per i punti 2 & 3 per generare a/A & b/B, e poi crypto:dh_compute_key è usato per i punti 4 & 5 per calcolare il segreto condiviso s.

Per RSA, non conosco una funzione di libreria standard che genera una coppia di chiavi pubblica/privata. Generare i primi è un algoritmo abbastanza coinvolto da ciò che ricordo; Ti consiglio vivamente di non provare a codificarti da solo. Le coppie di chiavi Diffie-Hellman non sono adatte allo per l'uso con RSA; sono algoritmi diversi destinati a scopi diversi.

Generalmente non è necessario generare questi in fase di esecuzione poiché è possibile riutilizzare la coppia di chiavi. È possibile utilizzare qualsiasi numero di altre fonti per generarlo effettivamente. (Forse ssh-keygen funzionerebbe? E c'è sempre OpenSSL.) Per usare la coppia di chiavi che hai creato, dovresti usare le funzioni crypto:rsa_ public/private _ encrypt/decrypt.

2

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

"cutkey è un'applicazione Erlang di generazione delle chiavi RSA. E 'implementato come un driver di porta che chiama RSA_generate_key OpenSSL su un filo dal piscina asincrono".

0

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

Problemi correlati