Ich habe Modul und private exponent. Wie konstruieren privaten RSA-Schlüssel und eine Nachricht signieren?
Ich bin Neuling in der Kryptographie und pycrypto.
Habe ich modulus n
und privaten exponent d
. Von dem was ich verstehe nach dem Lesen einiger docs privaten Schlüssel besteht aus n
und d
.
Brauche ich um eine Nachricht signieren, und ich kann nicht herausfinden, wie zu tun, dass die Verwendung pycrypto
. RSA.construct()
Methode akzeptiert ein Tupel. Aber ich habe zusätzlich bieten öffentliche exponent e
dieser Methode (die ich nicht habe).
So, hier ist meine Frage. Muss ich berechnen e
irgendwie um eine Nachricht signieren?
Es scheint, ich sollte in der Lage sein zu signieren einer Nachricht nur durch den Einsatz von n
und d
(bilden private key). Bin ich richtig? Kann ich dies mit pycrypto
?
Vielen Dank im Voraus.
- Sie haben NICHT den public key?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich für die Entschlüsselung einer Nachricht mit dem öffentlichen Schlüssel verschlüsselt, es ist genug, um die private exponent.
Dass bedeutet auch, können Sie eine Nachricht signieren, denn die Unterzeichnung ist im Grunde nur *de*Verschlüsselung der Klartext mit dem privaten Schlüssel, der bei *de*, verschlüsselt mit dem öffentlichen Schlüssel geben Sie den Klartext wieder. In der Regel verwenden Sie eine hash-digest-auf den Klartext vor und Zeichen, dass...
Den Grund, warum Sie nicht entschlüsseln einer Nachricht ierlichen nur
n
undd
mitpyrcypto
ist, dass es eine blendend Schritt, die während des Nachrichten-Entschlüsselung, die umfasst der öffentliche exponent, aber ist nicht wirklich nötig für die Entschlüsselung.Aber mit ein paar Anrufe an die private API wird dieser Schritt umgangen werden kann.
Daher sollte dies funktionieren:
partial = RSA.construct((full.n, 0L, full.d))
es wirft einen Fehler:ValueError: Unable to compute factors p and q from exponent d
. So ist es auch eine andere Möglichkeit zu konstruieren RSA-teilweise nur in der Lage sein, um eine Nachricht signieren?Nein, kann man nicht berechnen
e
ausd
.RSA ist symmetrisch in
d
unde
: Sie können ebenso gut vertauschen der Rollen der öffentlichen und privaten Schlüssel. Natürlich wählen wir eine speziell auf private und offenbaren die anderen-aber theoretisch Sie das gleiche tun. Natürlich, da kann man nicht ableiten, den privaten Schlüssel aus dem öffentlichen, kann man nicht ableiten, der öffentliche Schlüssel aus dem privaten entweder.Natürlich, wenn Sie den privaten Schlüssel, der bedeutet, dass Sie generiert das Schlüsselpaar, was bedeutet, dass Sie den öffentlichen Schlüssel irgendwo.
Wenn Sie nicht über den öffentlichen Exponenten, die Sie möglicherweise in der Lage sein, zu erraten. Die meisten der Zeit es ist nicht eine zufällige Primzahl, sondern einen statischen Wert. Versuchen Sie, die Werte 65537 (hex
0x010001
, die vierte Zahl von Fermat), 3, 5, 7, 13 und 17 sind (in dieser Reihenfolge).[BEARBEITEN] melden Sie sich Einfach mit dem privaten Schlüssel und überprüfen mit dem öffentlichen Schlüssel, um zu sehen, wenn der öffentliche Schlüssel korrekt ist.
Hinweis: wenn Sie die random-prime es ist so schwer zu finden, da der private exponent; das heißt, Sie würden versuchen, zu brechen RSA - wahrscheinlich nicht für alle Schlüsselgrößen > 512 bits.
n
und privaten exponentd
?