2017-09-22 2 views
0

Je n'ai que cela et je ne sais pas comment calculer la clé privée.Comment obtenir la clé publique rsa de p, q, d

const char* p("11255972776556904264355589361581299560395728872239621233068906405812608921813191755808405540044481084831045609458696035640942585319975255128754117171584651"); 
const char* q("4650473441707994051054607475682163000818993472760435603314465037312588601022012551228891"); 
const char* d("70043748630820478511883011265666731045146072028066310178672809101054479215166107831769673593025767853213311605740951029471462199049707526773053884221428550051565790192707552723439555048621215503776643878462109243202624983405481154406252935541613799894609964410988575108271598180781588706290307870314111895973"); 
+0

Pourriez-vous nous donner un peu plus d'informations? –

+0

Vous ne savez pas comment? Puis [regardez-le] (https://en.wikipedia.org/wiki/RSA_ (cryptosystem) #Key_generation). –

Répondre

0

J'ai seulement cela et je ne sais pas comment calculer la clé privée.

Vous connaissez déjà la clé privée: quand on parle de p, q et d avec RSA, p, q sont les nombres premiers et d est la clé privée. Par conséquent, la seule chose que vous ne connaissez pas est la clé publique. C'est (p*q, e), pour lequel e est l'exposant public. Avec beaucoup de bibliothèques RSA, e est 3 ou 65537. Il est facile de voir que vous n'avez pas choisi une de ces valeurs pour e: si vous aviez choisi l'une de ces deux valeurs, alors (3*d-1)/((p-1)(q-1)) ou (65537*d-1)/((p-1)(q-1)) aurait été un entier. J'ai calculé ces deux formules avec ce online big number calculator et ils ne donnent pas d'entiers. Donc, vous n'avez pas choisi l'une des valeurs communes pour e.

, vous devez donc calculer e par vous-même, en utilisant le extended euclidean algorithm avec (p-1)(q-1) et d comme entrée. La valeur du coefficient de Bézout pour d sera e. Voici un exemple d'implémentation de cet algorithme avec C, C# et Python, mais pas pour les grands nombres: implementating the extended euclidean algorithm.