2008-09-18 30 views
17

Quiero encriptar algunos archivos usando python cuál es la mejor manera ¿Puedo usar gpg/pgp usando cualquier biblioteca de python estándar/famosa?cuál es la mejor/más fácil de usar biblioteca de cifrado en python

+0

La encriptación es un tema complicado. Agregue más información sobre lo que está encriptando y por qué, y cómo su aplicación necesita administrarlo. Específicamente, debe hablar sobre cómo deben administrarse los secretos, eso determinará si debe usar cifrado de clave pública o solo un secreto compartido. – Allen

+0

Básicamente, solo quiero encriptar algunos archivos de configuración para que no sean legibles, compre otras personas, solo mi programa. no quiero ninguna solución infalible aquí porque de alguna manera tengo que descifrar archivos en mi programa o puede haber una manera infalible de hacer esto? –

Respuesta

8

PyCrypto parece ser la mejor opción.

+1

¿Por qué dices eso? –

+0

Es completo y el autor original AMK es un respetado desarrollador de Python. –

+0

Sí, pero su actual mantenedor no tiene ninguna liberación (como se verifica hoy) –

7

Trate KeyCzar

muy fácil de implementar.

4

Consulte el proyecto Keyczar de Google, que proporciona un buen conjunto de interfaces para la funcionalidad de PyCrypto.

6

Uso GPGme La principal ventaja de GPGme es que lee y escribe archivos en el estándar OpenPGP (RFC 4880), lo que puede ser importante si desea interoperar con otros programas PGP.

Tiene un Python interface. Advertencia: es una interfaz de bajo nivel, no muy Pythonic.

Si lee francés, see examples.

Aquí está uno, para comprobar una firma:

signed = core.Data(sys.stdin.read()) 
plain = core.Data() 
context = core.Context() 

context.op_verify(signed, None, plain) 
result = context.op_verify_result() 

sign = result.signatures 
while sign: 
    if sign.status != 0: 
     print "BAD signature from:" 
    else: 
     print "Good signature from:" 
    print " uid:  ", context.get_key(sign.fpr, 0).uids.uid 
    print " timestamp: ", sign.timestamp 
    print " fingerprint:", sign.fpr 
    sign = sign.next 
5

Yo uso pyOpenSSL, es un enlace de pitón para OpenSSL que ha existido durante mucho tiempo y está muy bien probado. Hice algunos puntos de referencia para mi aplicación, que es muy intensiva en criptografía y ganó sin problemas contra pyCrypto. YMMV.

Cuestiones relacionadas