
Una librería criptográfica autocontenida para 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 es un paquete Python autocontenido de primitivas criptográficas de bajo nivel.
Es compatible con Python 2.7, Python 3.7 y versiones posteriores, y PyPy.
El procedimiento de instalación depende del paquete en el que quieras que esté la biblioteca. PyCryptodome se puede usar de las siguientes maneras:
#. un sustituto casi directo de la antigua biblioteca PyCrypto. Puedes instalarlo con::
pip install pycryptodome
En este caso, todos los módulos se instalan bajo el paquete Crypto.
Debe evitarse tener PyCrypto y PyCryptodome instalados al mismo tiempo, ya que interferirán entre sí.
Por lo tanto, esta opción se recomienda solo cuando estés seguro de que
toda la aplicación se despliega en un virtualenv.
#. una biblioteca independiente de la antigua PyCrypto. Puedes instalarlo con::
pip install pycryptodomex
En este caso, todos los módulos se instalan bajo el paquete Cryptodome.
PyCrypto y PyCryptodome pueden coexistir.
Para operaciones de clave pública más rápidas en Unix, deberías instalar GMP_ en tu sistema.
PyCryptodome es una bifurcación (fork) de PyCrypto. Aporta las siguientes mejoras con respecto a la última versión oficial de PyCrypto (2.6.1):
Modos de cifrado autenticado (GCM, CCM, EAX, SIV, OCB, KW, KWP)
Cifrado híbrido de clave pública (HPKE)
AES acelerado en plataformas Intel mediante AES-NI
Compatibilidad de primera clase con PyPy
Criptografía de curvas elípticas (curvas P de NIST; Ed25519, Ed448, Curve25519, Curve448)
API mejor y más compacta (atributos nonce e iv para cifradores,
generación automática de nonces e IV aleatorios, modo de cifrado CTR simplificado,
y más)
Algoritmos hash SHA-3 (FIPS 202) y funciones derivadas (NIST SP-800 185):
XOF KangarooTwelve, TurboSHAKE128 y TurboSHAKE256
Algoritmos hash truncados SHA-512/224 y SHA-512/256 (FIPS 180-4)
Algoritmos hash BLAKE2b y BLAKE2s
Cifradores de flujo Salsa20 y ChaCha20/XChaCha20
MAC Poly1305
Cifradores autenticados ChaCha20-Poly1305 y XChaCha20-Poly1305
Funciones de derivación de claves scrypt, bcrypt, HKDF y NIST SP 800 108r1 en modo contador
(EC)DSA y EdDSA deterministas
Contenedores de claves PKCS#8 protegidos por contraseña
Esquema de reparto de secretos de Shamir
Los números aleatorios se obtienen directamente del sistema operativo (y no de un CSPRNG en el espacio de usuario)
Proceso de instalación simplificado, incluido un mejor soporte para Windows
Generación de claves RSA y DSA más limpia (basada en gran medida en FIPS 186-4)
Importantes limpiezas y simplificación de la base de código
PyCryptodome no es un envoltorio de una biblioteca C separada como OpenSSL. En la mayor medida posible, los algoritmos están implementados en Python puro. Solo las partes que son extremadamente críticas para el rendimiento (p. ej., los cifradores de bloque) se implementan como extensiones C.
Para más información, consulta la página principal_.
Para problemas de seguridad, envía un correo electrónico a [email protected].
Todo el código se puede descargar desde GitHub_.
.. _página principal: https://www.pycryptodome.org
.. _GMP: https://gmplib.org
.. _GitHub: https://github.com/Legrandin/pycryptodome