2010-01-20 10 views
6

Erlang hat eine Crypto-Funktion, die öffentliche private Schlüssel generiert (Dokumentation wird unten kopiert). Die Dokumentation scheint jedoch vage zu sein und ich kann keinen Beispielcode finden, der beschreibt, wie man die geteilte Primzahl oder den Generator erzeugt. Kann jemand ein Beispiel veröffentlichen, das ein öffentliches/privates Schlüsselpaar generiert? Vielen Dank im Voraus für jede Hilfe!Generieren eines RSA-Schlüsselpaars mit Erlang?

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

Arten: DHParameters = [P, G] P, G = mpint Wo P die gemeinsame Primzahl ist und G ist der gemeinsame Generator. PublicKey, PrivateKey = Mpint() Erzeugt einen Diffie-Hellman PublicKey und PrivateKey (falls nicht angegeben).

+1

Kennen Sie den Unterschied zwischen RSA und Diffie-Hellman? –

+1

Es könnte helfen, wenn Sie erklären, warum Sie ein RSA-Schlüsselpaar benötigten. Nichts für ungut, aber wenn Sie RSA und DH verwirren, versuchen Sie unwissentlich einen Verschlüsselungsalgorithmus zu verwenden, der für Ihre Anwendung ungeeignet ist. Vielleicht können wir einen vorschlagen, der besser passt. – Tadmas

+0

Wenn Sie nur einen öffentlichen Schlüssel und einen privaten Schlüssel für RSA erhalten möchten, versuchen Sie Folgendes: 'crypto: generate_key (rsa, {1024, 3})' – beenotung

Antwort

7

Sie erzeugen die geteilte Primzahl oder den Generator für Diffie-Hellman nicht. Siehe:

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

Die Parameter P und G sind sich einig, von beiden Seiten vor der Zeit. Unter Verwendung der Notation des Artikels Wikipedia wird crypto:dh_generate_key für die Schritte verwendet, 2 /A & b/B, zu erzeugen, und dann wird für die Schritte verwendet 5 den gemeinsamen geheimen Schlüssel s zu berechnen.

Für RSA, ich kenne keine Standard-Bibliothek-Funktion, die ein öffentliches/privates Schlüsselpaar generiert. Generieren von Primzahlen ist ein ziemlich einflussreicher Algorithmus von dem, woran ich mich erinnere; Ich würde dringend empfehlen, dass Sie nicht versuchen, es selbst zu programmieren. Diffie-Hellman-Schlüsselpaare sind nicht geeignet für die Verwendung mit RSA; Sie sind verschiedene Algorithmen, die für verschiedene Zwecke gedacht sind.

Im Allgemeinen müssen Sie diese zur Laufzeit nicht generieren, da Sie das Schlüsselpaar wiederverwenden können. Sie können eine beliebige Anzahl anderer Quellen verwenden, um sie tatsächlich zu generieren. (Vielleicht würde ssh-keygen funktionieren? Und es gibt immer OpenSSL.) Um das Schlüsselpaar zu verwenden, das Sie erstellt haben, würden Sie die crypto:rsa_ public/private _ encrypt/decrypt Funktionen verwenden.

2

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

"cutkey ist ein Erlang-App für RSA-Schlüssel zu erzeugen. Dieser wird als implementiert ist ein Port-Treiber, die OpenSSL RSA_generate_key den Asynchron-Pool von auf einen Thread ruft."

0

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