Domanda RSA: cripare una chiave

wasdunity

Utente Bronze
4 Settembre 2019
33
15
3
31
Codice:
import rsa
(client_public_key, client_private_key) = rsa.newkeys(2048)
# ‘n’, ‘e’, ‘d’, ‘p’, ‘q’
encrypt_client_private_key = rsa.encrypt(str(client_private_key.n) + str(client_private_key.e) + str(client_private_key.d) + str(client_private_key.p) + str(client_private_key.q), client_public_key)
print(encrypt_client_private_key)
Vorrei riuscire a criptare client_private_key con client_public_key. Ma quando eseguo lo script ricevo un errore di overflow: OverflowError: 1855 bytes needed for message, but there is only space for 245.
Come posso fare? esiste un modo?
Se è una domanda stupida mi scuso, conosco solo superficialmente RSA.
 
La lunghezza massima di un messaggio che puoi cifrare con una chiave a 2048 bit (256 byte) è di 245 byte. La lunghezza massima per RSA PKCS#1 è infatti KeySize(bytes) - 11.
Tipicamente, RSA viene utilizzare per cifrare una chiave di sessione (tipo AES) e mandarla all'altra parte. Dopodiché tutti i messaggi vengono cifrati con crittografia simmetrica (anche perché la crittografia asimmetrica è 3/4 volte più lenta di quella simmetrica).
In alternativa puoi dividere il messaggio in parti di dimensione massima di 245 byte.
 
  • Mi piace
Reazioni: 0xbro e wasdunity