Holen Sie sich den öffentlichen Schlüssel aus dem privaten in Java
Ich erinnere mich, dies schon vor langer Zeit mit OpenSSL, aber ich möchte wissen, ob es möglich und wie, ich habe noch nie verwendet die Kryptographie auf java.
- Siehe stackoverflow.com/questions/11345346/... und unten, Antwort auf Antwort auf diese Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht erzeugen Schlüssel direkt von dem anderen. Es ist mathematisch unmöglich. Wenn Sie einen Schlüssel hatten-blob enthalten, dass beide der öffentliche und private Schlüssel, die Sie extrahieren konnte entweder einer von Ihnen mit relativer Leichtigkeit.
BEARBEITEN, 2017: Viele Jahre und ein viel besseres Verständnis von crypto später, und jetzt ist es mir klar, dass diese Antwort ist nicht wirklich korrekt.
Zitat Wikipedia:
Den öffentlichen modulus n berechnet werden kann als p × q. Das einzige, was fehlt, aus einem raw privaten Schlüssel e, aber dieser Wert ist in der Regel als 65537, und wenn nicht, können Sie noch berechnen e aus d und λ(n).
Aber viele private key storage Formate tatsächlich enthalten die öffentlichen modulus n neben den anderen Komponenten, so können Sie einfach eine direkte Extraktion der Werte.
BEARBEITEN, 2018: Noch immer downvotes für diese, und das zu Recht! Ich lasse diese Antwort so Leute sehen können, warum ich ursprünglich falsch, und daran zu erinnern, mich nicht falsch zu sein in der Zukunft.
Ist die Annahme, dass wir reden über RSA-private und Öffentliche Schlüssel. Dann, wenn Sie aus einer PEM-format-Datei, dann müssen Sie zuerst Lesen Sie die privaten Schlüssel aus der Datei in ein PrivateKey Objekt:
wo File2String ist so etwas wie:
Nun können Sie die Generierung der entsprechenden PublicKey mit code wie diesem:
...
Credits: Wie bekommt man einen RSA-PublicKey, indem Sie ein PrivateKey?
Bitte stellen Sie sicher, dass Eli Rosencruft Antwort ist im Grunde richtig, aber die Reihenfolge der E-Modul und dem öffentlichen Exponenten sind falsch! Dies ist die richtige Aussage: