Kryptographie : die Generierung des Privaten RSA-Schlüssel (Mit Modul & Exponent
Ich bin neu auf kryptographische Welt. Ich brauche zum generieren einer entsprechenden privaten RSA-Schlüssel aus den Daten unten.
Modulus B87BDAB530F8FDED78223D841C5D4E66A6CA86E1D690E829755F244B6FA64D0B8FFBB33AC46FE533568FD6A965EDE7AFFAED8B15476E7B70D637188B8E6B78FDAE17941E7A1304699405F94FD8E596A2BA1CA57D413E96F6E9A3F7585EEF156E8220E7C45DCB48C6CC667AC52E521444225DD6F5611CE8C14DF680C291CFDFE5
Modulus
(Base 64) uHvatTD4/e14Ij2EHF1OZqbKhuHWkOgpdV8kS2+mTQuP+7M6xGlM1aP1qll7eev+u2LFUdue3DWNxiLjmt4a4XlB56EwRplAX5T9jllqK6HKV9QT6W9umj91he7xVugiDnxF3LSMbMZnrFLlIURCJd1vVhHOjBTfaAwpHP3+U=
Private Exponent 84920445868EB73309CC593671879F8A66BB4D18472F54964E50F36CFE2B9C5BFDB8DB4014DF6FEE677AEFC0458E239B338FB60DB18A344C8EB38300EE744EB98B2606AC4781C4C9317B0289F41D7E92C927639E699D0E903B5160D9AEBFD70C1D6EBA539774459B95107E60941B22EECD54F7D0C8DE47DA7719C33FD4DB9155
Private Exponent (Base 64) hJIERYaOtzMJzFk2cYefima7TRhHL1SWTlDzbP4rnFv9uNtAFN9v7md678BFjiObM4+2DbGKNEyOs4MA7nROuYsmBqxHgcTJMXsCifQdfpLJJ2OeaZ0OkDtRYNmuv9cMHW66U5d0RZuVEH5glBsi7s1U99DI3kfadxnDP9TbkVU=
Public Exponent 010001
Public Exponent (Base 64) AQAB
Verwendete ich folgende zu erzeugen, die RSAPrivateKey aber der Schlüssel ist nicht korrekt.
char *szModulus = "B87BDAB530F8FDED78223D841C5D4E66A6CA86E1D690E829755F244B6FA64D0B8FFBB33AC46FE533568FD6A965EDE7AFFAED8B15476E7B70D637188B8E6B78FDAE17941E7A1304699405F94FD8E596A2BA1CA57D413E96F6E9A3F7585EEF156E8220E7C45DCB48C6CC667AC52E521444225DD6F5611CE8C14DF680C291CFDFE5" ;
char *szExp = "84920445868EB73309CC593671879F8A66BB4D18472F54964E50F36CFE2B9C5BFDB8DB4014DF6FEE677AEFC0458E239B338FB60DB18A344C8EB38300EE744EB98B2606AC4781C4C9317B0289F41D7E92C927639E699D0E903B5160D9AEBFD70C1D6EBA539774459B95107E60941B22EECD54F7D0C8DE47DA7719C33FD4DB9155" ;
char *szPubExp = "010001" ;
RSA* rsa = RSA_new();
int ret = BN_hex2bn(&rsa->n,szModulus) ;
ret = BN_hex2bn(&rsa->d,szExp) ;
ret = BN_hex2bn(&rsa->e,szPubExp) ;
if (!PEM_write_RSAPrivateKey(fp, rsa, NULL, NULL, 0, 0, NULL))
{
printf("\n PEM_write_PrivateKey failed \n") ;
}
/**/
- Klingt nach Hausaufgaben
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Modul und der private exponent sind den privaten Schlüssel, zumindest in einer vereinfachten Weise.
Mit RSA, ist es üblich, gehören noch ein paar andere Parameter in den privaten Schlüssel, wie die zwei (oder mehr) Primfaktoren des modulus. Diese zusätzlichen Parameter nicht mehr bieten macht (der E-Modul und des privaten Exponenten genug, um zu berechnen, Signaturen und entschlüsseln von Daten) erlauben jedoch eine schnellere Umsetzung (um den Faktor 3x bis 4x).
Damit, vielleicht, die Frage ist, erholt sich die Primfaktoren des modulus, angesichts der oben genannten Informationen. Die generische Methode ist in der Handbook of Applied Cryptography, Kapitel 8, Abschnitt 8.2.2, Absatz (i) ("Verhältnis zu factoring"), Seite 287.
RSA
Struktur mit all den zusätzlichen Werten:p
,q
,dmp1
,dmq1
,iqmp
. Diese Werte werden berechnet unter Verwendung der Methode, die ich ein link in meine Antwort.