fernet descargar python cryptography

descargar - python cryptography fernet



Módulo criptográfico de Python recomendado? (8)

pycrypt es en realidad un simple módulo de cifrado / descifrado AES construido sobre pycrypto como otros módulos que usted menciona; tenga en cuenta que este último está en transición a la URL de pycrypto.org ya que está cambiando mantenedores, y las versiones y documentos estables todavía están en el autor original sitio . Además de las envolturas más fáciles de usar que mencionas, una ventaja de pycrypto es que se suministra un subconjunto de python puro con el App Engine de Google, por lo que familiarizarse con él sería útil si alguna vez deseas implementar algún código allí. .

La principal alternativa (otro proyecto potente y complejo, como pycrypto) es pyopenssl , que es un ajuste bastante regular (un "envoltorio delgado", como el autor lo describe) de OpenSSL (que puede ser una ventaja si estás acostumbrado a la codificación en C con llamadas a OpenSSL). Un paquete alternativo que está completo (viene con las bibliotecas necesarias) y posiblemente legalmente más seguro (excluye las partes en las que hay disputas de patentes o dudas) es distribuido por egenix .

Ambos proyectos principales (pycrypto y pyopenssl) atravesaron largos períodos de más o menos inactividad a medida que los autores originales pasaban a otras cosas, pero ambos se desarrollan activamente y se mantienen nuevamente, lo cual es siempre una buena señal.

No conozco los envoltorios fáciles de usar que se encuentran encima del pyopenssl (lo más probable es que existan, pero no se han publicitado como los que están encima del pycrypto) y, por lo tanto, si parece que le importa la facilidad de uso y no estás buscando escribir wrappers tú mismo, los que están encima de pycrypto parecen ser una mejor opción.

He estado explorando qué módulos criptográficos están disponibles para Python, y he encontrado 3: ezPyCrypt, yawPyCrypt y KeyCzar (que en realidad admite algunos idiomas, pero Python se incluye entre ellos). Los primeros dos dependen del módulo PyCrypto.

¿Hay opciones que me falta? ¿Hay una clara ventaja para la facilidad y las características o simplemente se reduce a una forma de nivel de comodidad de uno?

Actualmente me estoy inclinando hacia KeyCzar, con ezPyCrypt muy cerca.

Utilizaría la biblioteca para la firma y verificación de firmas digitales, y posiblemente para la creación de claves (aunque no lloraré si tengo que hacer una llamada a otra cosa para esa funcionalidad).

Estoy usando Python 3.xy tengo acceso a GPG.


Acabo de hacer una encuesta de este tipo la semana pasada y adopté M2Crypto que parece ser el contenedor más avanzado hoy en día por encima de openssl (lo encontré en varias listas de recomendación mientras buscábamos en Google). También probé Pycrypto, pero se olvida de la gestión de certificados y la gestión de formato de archivo de clave estándar que tiene M2Crypto (con pycrypto tienes que desenterrar / insertar tus claves o escribir tu propio administrador de claves para formatos comunes).

Encontré que M2Crypto era bastante fácil de usar y pude desarrollar rápidamente lo que necesitaba (un formato de paquete firmado y encriptado).

Sin embargo, recomiendo descargar el paquete completo, no solo instalarlo fácilmente, porque en el paquete también se obtienen buenos ejemplos (consulte el directorio de demostración).

Aquí está el enlace http://pypi.python.org/pypi/M2Crypto/0.20.1

Un inconveniente podría ser que está utilizando Python 3.0, estoy atascado con 2.5 en el trabajo (con suerte 2.6 pronto) y no sé si M2Crypto funciona con python 3.0

Todavía no tengo mucha práctica, si tienes problemas específicos solo pídelo aquí. Alguien puede responder.



Una nueva biblioteca de criptografía para Python ha estado en rápido desarrollo durante unos meses. La versión 0.2.1 acaba de suceder hace unos días.

https://cryptography.io/en/latest/

Es principalmente un contenedor de CFFI alrededor de las bibliotecas C existentes, como OpenSSL. Se distribuye como un módulo de python puro y es compatible con las versiones de CPython 2.6 - 3.3 y PyPy. También es el flujo ascendente del paquete pyOpenSSL refactorizado.

Su objetivo es exponer las "recetas" de alto nivel que hacen que la criptografía sea tan estúpida como sea posible, así como las primitivas que solo deben usarse con la precaución adecuada. Los algoritmos simétricos (incluido AES-GCM) están muy bien soportados y los algoritmos asimétricos como RSA y DSA deberían aparecer en las próximas versiones. Otros algoritmos notables que son compatibles incluyen PBKDF2, HKDF, HOTP y TOTP.



Otra biblioteca criptográfica a considerar es PyCryptodome , una bifurcación de PyCrypto con compatibilidad PyPy y algunas primitivas más (SHA-3, Salsa20, scrypt, etc.).


Si se encuentra en un entorno que incluye GnuPG y Python> = 2.4, también podría considerar una herramienta como python-gnupg . (Descargo de responsabilidad: soy el mantenedor de este proyecto.) Deja el trabajo pesado para gpg y proporciona una API bastante sencilla.

Descripción general de API:

>>> import gnupg >>> gpg = gnupg.GPG(gnupghome=''/path/to/keyring/directory'') >>> gpg.list_keys() [{ ... ''fingerprint'': ''F819EE7705497D73E3CCEE65197D5DAC68F1AAB2'', ''keyid'': ''197D5DAC68F1AAB2'', ''length'': ''1024'', ''type'': ''pub'', ''uids'': ['''', ''Gary Gross (A test user) '']}, { ... ''fingerprint'': ''37F24DD4B918CC264D4F31D60C5FEFA7A921FC4A'', ''keyid'': ''0C5FEFA7A921FC4A'', ''length'': ''1024'', ... ''uids'': ['''', ''Danny Davis (A test user) '']}] >>> encrypted = gpg.encrypt("Hello, world!", [''0C5FEFA7A921FC4A'']) >>> str(encrypted) ''-----BEGIN PGP MESSAGE-----/nVersion: GnuPG v1.4.9 (GNU/Linux)/n /nhQIOA/6NHMDTXUwcEAf ... -----END PGP MESSAGE-----/n'' >>> decrypted = gpg.decrypt(str(encrypted), passphrase=''secret'') >>> str(decrypted) ''Hello, world!'' >>> signed = gpg.sign("Goodbye, world!", passphrase=''secret'') >>> verified = verified = gpg.verify(str(signed)) >>> print "Verified" if verified else "Not verified" ''Verified''


PyCrypto es mi elección atm (última actualización de pypi 2012-05-24) y el código fuente está alojado en GitHub: https://github.com/dlitz/pycrypto . Puede ejecutar matemática pura de Python o usar libgmp (necesitará sudo apt-get install libgmp-dev en Debian para habilitar la última).

M2Crypto es un contenedor para OpenSSL (última actualización de pypi 2011-01-15), código fuente en http://svn.osafoundation.org/m2crypto/ .

gnupg (actualizado el 13-06-2013), ver la respuesta de Vinay Sajip . Hay un fork parcheado (actualizado el 13-07-2013) alojado en https://github.com/isislovecruft/python-gnupg

Otras alternativas son mencionadas por Alex Martelli

EDITAR: críticas de los paquetes criptográficos existentes y referencias a algunos nuevos https://news.ycombinator.com/item?id=6194102