
Une bibliothèque cryptographique autonome pour 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 est un package Python autonome de primitives cryptographiques de bas niveau.
Il prend en charge Python 2.7, Python 3.7 et versions ultérieures, ainsi que PyPy.
La procédure d'installation dépend du package dans lequel vous souhaitez que la bibliothèque soit. PyCryptodome peut être utilisé comme :
#. un remplaçant quasi direct de l'ancienne bibliothèque PyCrypto. Vous l'installez avec ::
pip install pycryptodome
Dans ce cas, tous les modules sont installés sous le package Crypto.
Il faut éviter d'avoir PyCrypto et PyCryptodome installés en même temps, car ils interféreraient l'un avec l'autre.
Cette option n'est donc recommandée que lorsque vous êtes certain que
l'ensemble de l'application est déployé dans un virtualenv.
#. une bibliothèque indépendante de l'ancienne PyCrypto. Vous l'installez avec ::
pip install pycryptodomex
Dans ce cas, tous les modules sont installés sous le package Cryptodome.
PyCrypto et PyCryptodome peuvent coexister.
Pour des opérations à clé publique plus rapides sous Unix, vous devriez installer GMP_ sur votre système.
PyCryptodome est un fork de PyCrypto. Il apporte les améliorations suivantes par rapport à la dernière version officielle de PyCrypto (2.6.1) :
Modes de chiffrement authentifiés (GCM, CCM, EAX, SIV, OCB, KW, KWP)
Chiffrement hybride à clé publique (HPKE)
AES accéléré sur les plateformes Intel via AES-NI
Support de première classe pour PyPy
Cryptographie sur courbes elliptiques (courbes P du NIST ; Ed25519, Ed448, Curve25519, Curve448)
API meilleure et plus compacte (attributs nonce et iv pour les chiffrements, génération automatique de nonces et d'IV aléatoires, mode de chiffrement CTR simplifié, etc.)
Algorithmes de hachage SHA-3 (FIPS 202) et fonctions dérivées (NIST SP-800 185) :
XOF KangarooTwelve, TurboSHAKE128 et TurboSHAKE256
Algorithmes de hachage tronqués SHA-512/224 et SHA-512/256 (FIPS 180-4)
Algorithmes de hachage BLAKE2b et BLAKE2s
Chiffrements de flux Salsa20 et ChaCha20/XChaCha20
MAC Poly1305
Chiffrements authentifiés ChaCha20-Poly1305 et XChaCha20-Poly1305
Fonctions de dérivation de clé scrypt, bcrypt, HKDF et NIST SP 800 108r1 en mode compteur
(EC)DSA déterministe et EdDSA
Conteneurs de clés PKCS#8 protégés par mot de passe
Schéma de partage de secret de Shamir
Les nombres aléatoires proviennent directement du système d'exploitation (et non d'un CSPRNG dans l'espace utilisateur)
Processus d'installation simplifié, avec une meilleure prise en charge de Windows
Génération de clés RSA et DSA plus propre (largement basée sur FIPS 186-4)
Nettoyages majeurs et simplification de la base de code
PyCryptodome n'est pas un wrapper vers une bibliothèque C séparée comme OpenSSL. Dans la plus large mesure possible, les algorithmes sont implémentés en Python pur. Seules les parties extrêmement critiques pour les performances (par exemple les chiffrements par blocs) sont implémentées en extensions C.
Pour plus d'informations, voir la page d'accueil_.
Pour les problèmes de sécurité, veuillez envoyer un courriel à [email protected].
Tout le code peut être téléchargé depuis GitHub_.
.. _page d'accueil: https://www.pycryptodome.org
.. _GMP: https://gmplib.org
.. _GitHub: https://github.com/Legrandin/pycryptodome