Soweit ich verstehe, sollte ich in der Lage sein, RSA zu verwenden, um Authentizität oder Privatsphäre zu gewährleisten, wie ich es wünsche. In meinem Fall möchte ich die Authentizität sicherstellen, also verschlüssle ich die Daten mit dem privaten Schlüssel und erlaube jedem, sie mit dem öffentlichen Schlüssel zu entschlüsseln. Die Daten sind nicht wirklich geheim, aber ich muss garantieren, dass sie vom Besitzer des öffentlichen (und privaten) Schlüssels erstellt wurden. Wenn ich versuche, mit PyCrypto zu entschlüsseln, bekomme ich Kein privater Schlüssel Fehler von PyCrypto. Der Code ist dies:Entschlüsseln mit einem öffentlichen RSA-Schlüssel mit PyCrypto
def _decrypt_rsa(decrypt_key_file, cipher_text):
from Crypto.PublicKey import RSA
from base64 import b64decode
key = open(decrypt_key_file, "r").read()
rsakey = RSA.importKey(key)
raw_cipher_data = b64decode(cipher_text)
decrypted = rsakey.decrypt(raw_cipher_data)
return decrypted
ich es mit dem Pfad zu dem öffentlichen Schlüssel Aufruf der Datei Die verschlüsselten Daten werden von mir nicht erzeugt, und es wurde nicht mit Python aber PHP getan (in OpenSSH-Format.). In PHP gibt es eine Funktion, die diese Daten leicht entschlüsselt.
Ist es überhaupt möglich, mit dem öffentlichen Schlüssel mit PyCrypto zu entschlüsseln?
Sie haben es umgekehrt. Der öffentliche Schlüssel wird zum Verschlüsseln und der private Schlüssel zum Entschlüsseln verwendet. – jchysk
Öffentliche Entschlüsselung ist die gleiche wie verschlüsseln. Ihr Problem kann auf diese Weise behoben werden: 'decrypted = rsakey.encrypt (raw_cipher_data, 0)' – Helio
Wenn die Quelle wirklich mit dem privaten Schlüssel verschlüsselt ist, dann haben sie die Daten effektiv signiert. Mit einigen Tools, wie Java, können Sie dies tun. Um die Signatur zu entschlüsseln, können Sie einen öffentlichen Schlüssel (oder den öffentlichen Teil eines privaten Schlüssels) verwenden. Siehe: https://stackoverflow.com/questions/48280670/pycrypto-how-to-view-raw-rs-a-signature-data –