
Una libreria crittografica autonoma per Python
.. image:: https://github.com/Legrandin/pycryptodome/workflows/Integration%20test/badge.svg :target: https://github.com/Legrandin/pycryptodome/actions
.. image:: https://badge.fury.io/py/pycryptodome.svg :target: https://pypi.org/project/pycryptodome
.. image:: https://badge.fury.io/py/pycryptodomex.svg :target: https://pypi.org/project/pycryptodomex
PyCryptodome è un pacchetto Python autonomo di primitive crittografiche di basso livello.
Supporta Python 2.7, Python 3.7 e versioni successive, e PyPy.
La procedura di installazione dipende dal pacchetto in cui si desidera che la libreria sia contenuta. PyCryptodome può essere utilizzato come:
#. una sostituzione quasi diretta per la vecchia libreria PyCrypto. Lo installi con::
pip install pycryptodome
In questo caso, tutti i moduli vengono installati nel pacchetto Crypto.
Bisogna evitare di avere PyCrypto e PyCryptodome installati contemporaneamente, poiché interferirebbero tra loro.
Questa opzione è quindi consigliata solo quando si è certi che l'intera applicazione sia distribuita in un virtualenv.
#. una libreria indipendente dalla vecchia PyCrypto. Lo installi con::
pip install pycryptodomex
In questo caso, tutti i moduli vengono installati nel pacchetto Cryptodome.
PyCrypto e PyCryptodome possono coesistere.
Per operazioni di crittografia a chiave pubblica più veloci in Unix, dovresti installare GMP_ nel tuo sistema.
PyCryptodome è un fork di PyCrypto. Introduce i seguenti miglioramenti rispetto all'ultima versione ufficiale di PyCrypto (2.6.1):
Modalità di cifratura autenticata (GCM, CCM, EAX, SIV, OCB, KW, KWP)
Cifratura ibrida a chiave pubblica (HPKE)
AES accelerato su piattaforme Intel tramite AES-NI
Supporto di prima classe per PyPy
Crittografia a curve ellittiche (curve P NIST; Ed25519, Ed448, Curve25519, Curve448)
API migliore e più compatta (attributi nonce e iv per i cifrari, generazione automatica di nonce e IV casuali, modalità di cifratura CTR semplificata e altro)
Algoritmi di hash SHA-3 (FIPS 202) e funzioni derivate (NIST SP-800 185):
XOF KangarooTwelve, TurboSHAKE128 e TurboSHAKE256
Algoritmi di hash troncati SHA-512/224 e SHA-512/256 (FIPS 180-4)
Algoritmi di hash BLAKE2b e BLAKE2s
Cifrari a flusso Salsa20 e ChaCha20/XChaCha20
MAC Poly1305
Cifrari autenticati ChaCha20-Poly1305 e XChaCha20-Poly1305
Funzioni di derivazione delle chiavi scrypt, bcrypt, HKDF e NIST SP 800 108r1 Counter Mode
(EC)DSA deterministico ed EdDSA
Contenitori di chiavi PKCS#8 protetti da password
Schema di condivisione del segreto di Shamir
I numeri casuali provengono direttamente dal sistema operativo (e non da un CSPRNG nello spazio utente)
Processo di installazione semplificato, incluso un supporto migliore per Windows
Generazione di chiavi RSA e DSA più pulita (basata in gran parte su FIPS 186-4)
Pulizia approfondita e semplificazione della base di codice
PyCryptodome non è un wrapper per una libreria C separata come OpenSSL. Nella misura più ampia possibile, gli algoritmi sono implementati in puro Python. Solo le parti estremamente critiche per le prestazioni (ad es. i cifrari a blocchi) sono implementate come estensioni C.
Per maggiori informazioni, consulta la homepage_.
Per problemi di sicurezza, inviare un'email a [email protected].
Tutto il codice può essere scaricato da GitHub_.
.. _homepage: https://www.pycryptodome.org
.. _GMP: https://gmplib.org
.. _GitHub: https://github.com/Legrandin/pycryptodome