Per quanto ho capito, dovrei essere in grado di utilizzare RSA per garantire l'autenticità o la privacy, come vorrei. Nel mio caso, voglio garantire l'autenticità, quindi crittografo i dati con la chiave privata e permetto a chiunque di decodificarlo con la chiave pubblica. I dati non sono davvero segreti, ma ho bisogno di garantire che sia stato creato dal proprietario della chiave pubblica (e privata).Decifrare utilizzando una chiave pubblica RSA con PyCrypto
Quando provo a decrittografare con PyCrypto ottengo Nessun errore di chiave privata da PyCrypto. Il codice è questo:
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
sto chiamando con il percorso del file di chiave pubblica I dati crittografati non è generata da me e non è stato fatto con Python, ma PHP (in formato OpenSSH.). In PHP c'è una funzione openssl_public_decrypt
che decodifica facilmente questi dati.
È possibile decifrare utilizzando la chiave pubblica con PyCrypto?
Avete invertito. La chiave pubblica viene utilizzata per crittografare e la chiave privata viene utilizzata per decrittografare. – jchysk
Il decrypt pubblico è lo stesso di encrypt. Il tuo problema può essere risolto in questo modo: 'decrypted = rsakey.encrypt (raw_cipher_data, 0)' – Helio
Se la fonte ha veramente crittografato con la chiave privata, hanno effettivamente firmato i dati. Alcuni strumenti, come Java, ti permettono di farlo. Per decifrare la firma è possibile utilizzare una chiave pubblica (o la parte pubblica di una chiave privata). Vedi: https://stackoverflow.com/questions/48280670/pycrypto-how-to-view-raw-rsa-signature-data –