2016-04-11 6 views
1

Ich habe an einem Projekt auf der Basis von RSA-Schlüsselaustausch gearbeitet und ich habe Crypto ++ Library verwendet. Ich folgte den Richtlinien in https://www.cryptopp.com/wiki/Raw_RSA und mein Projekt funktioniert gut. Ich habe jedoch bemerkt, dass der öffentliche Schlüssel immer auf 17 = 11 und wenn ich in der rsa.cpp in Crypto ++ sah, dass öffentlicher Schlüssel behoben ist!RSA-Funktion erzeugt öffentlichen Schlüssel (e) immer zu 17

Wieder mein Projekt funktioniert gut, aber ich möchte nur wissen, warum ..

+1

Das ist nur der Exponent. Der Modul sollte unterschiedlich sein. – hammar

+0

Cross-Site-Duplikat: [In RSA-Verschlüsselung, muss der Wert von E zufällig sein?] (Http://crypto.stackexchange.com/q/5572/13022) –

+0

Danke, ich habe es durch Lesen der verlinkten Artikel. .. – Mona

Antwort

2

Ich bemerkte, dass der öffentliche Schlüssel immer auf 17 festgelegt ist = 11 und als ich sah in die rsa.cpp in Crypto ++, dass der öffentliche Schlüssel ist behoben!
... mein Projekt funktioniert gut, aber ich möchte nur wissen, warum ..

, dass der öffentliche Exponent ist, und Sie können es ändern. Siehe InvertibleRSAFunction Class Reference.

InvertibleRSAFunction ist ein seltsamer Name, wenn Sie nicht mit der Bibliothek vertraut sind, aber es gibt einen Typ definieren für typedef InvertibleRSAFunction PrivateKey in rsa.h. RSA::PrivateKey ‚s Initialize Funktion, die die RandomNumberGenerator nimmt, ist derjenige, der Schlüssel erstellt:

void Initialize (RandomNumberGenerator &rng, unsigned int modulusBits, const Integer &e=17) 

Die einzige Voraussetzung für den öffentlichen Exponenten (e) ist es phi co-prime oder prim sein. Phi ist Eulers Φ-Funktion, und es ist definiert als (p-1)*(q-1). Es stellt sicher, dass es eine Umkehrung gibt (der private Exponent d).

Der öffentliche Exponent wird normalerweise für ein niedriges Hamming-Gewicht ausgewählt, um öffentliche Schlüsseloperationen schneller zu machen. Ein niedriges Hamming-Gewicht bedeutet, dass es sehr wenige Einsen hat, und typische Werte sind 3 (0x3), 17 (0x11) und 65537 (0x10001). Weniger 1 macht die Exponentiation für die Public-Key-Operationen schnell.

Zur Vollständigkeit der öffentliche Schlüssel ist {n,e}. Der private Schlüssel ist {n,e,d}. Private Schlüssel mit CRT-Parametern sind {n,e,d,p,q,dp,dp,u}.

+0

Vielen Dank ... – Mona