uso opciones importar gpg con comando claves cifrar archivos abrir python encryption gnupg

opciones - python gnupg.encrypt: sin errores, pero sin encriptar datos o archivos



importar claves gpg (1)

De acuerdo, finalmente logré ver esto y obtuve el encriptado básico para trabajar desde la línea de comando. Aquí hay un ejemplo que funcionará para cifrar datos ingresados ​​desde la línea de comando:

import gnupg gpg_home = "/path/to/gnupg/home" gpg = gnupg.GPG(gnupghome=gpg_home) data = raw_input("Enter data to encrypt: ") rkey = raw_input("Enter recipient''s key ID: ") encrypted_ascii_data = gpg.encrypt(data, rkey) print(encrypted_ascii_data)

Cambia gpg_home a cualquiera de esas dos rutas GnuPG que quieras usar. El primero se parece a la ubicación de instalación predeterminada y el segundo parece ser específico para su cuenta de usuario. La secuencia de comandos le pedirá que cifre un texto y una ID de clave para cifrar, luego imprimirá los datos cifrados con armadura ASCII en stdout.

EDITAR: No estoy seguro, pero sospecho que la razón por la cual tu código falló fue debido al uso de la huella digital completa para la identificación de la clave del destinatario, que es innecesario (utilicé el formato 0xLONG, cuyo ejemplo está en mi perfil), o llamaste al directorio de inicio de GPG equivocado.

EDIT 2: Esto sirve para encriptar archivos y escribir el resultado en un archivo en el mismo directorio, funcionará como en los sistemas * nix. Deberá cambiar gpg_home como en el ejemplo anterior:

import gnupg gpg_home = "~/.gnupg" gpg = gnupg.GPG(gnupghome=gpg_home) data = raw_input("Enter full path of file to encrypt: ") rkeys = raw_input("Enter key IDs separated by spaces: ") savefile = data+".asc" afile = open(data, "rb") encrypted_ascii_data = gpg.encrypt_file(afile, rkeys.split(), always_trust=True, output=savefile) afile.close()

¡Mi trabajo aquí está hecho! :)

Por cierto, ambos ejemplos usan Python 2.7, para Python 3 necesitarás modificar las líneas raw_input () para usar input () en su lugar.

utilizando python-gnupg v0.3.5 en Windows 7 con Python 2.7 y GPG4Win v2.2.0

test_gnupg.py produce 2 fallos:

Prueba que la búsqueda de claves funciona ... FALLA

Doctest: gnupg.GPG.recv_keys ... FAIL

Existen 2 llaveros en cada uno de estos lugares (secring & pubring en cada uno):

en el directorio GPGHome (C: / Archivos de programa (x86) / GNU / GnuPG)

en el perfil de usuario (C: / Users // AppData / Roaming / gnupg)

Si creo una instancia de GPG y establezco la ruta del archivo de claves en el perfil de usuario pubring.pgp, obtengo un resultado de GPG.list_keys (). Si dejo que use el directorio gpghome pubring.pgp, no obtengo ningún resultado de list_keys () porque ese keyring está vacío.

Entonces dado que especifico el keyring de perfil de usuario y tengo una clave para usar esto es lo que sucede:

>>>data = ''1234 abcd 56678'' >>>fingerprint = u''<fingerprint>'' >>>enc = gpg.encrypt(data,fingerprint) >>>enc.data ''''

encrypt_file () da los mismos resultados, no pasa nada, no hay errores. No soy particularmente inteligente en todo esto, pero parece que si tengo datos y clave pública esto debería ser completamente simple. Estoy teniendo un momento horrendo tratando de determinar qué es lo incorrecto dado que no veo archivos de registro en ningún lado y no tengo errores al intentar esto.

¿Cómo puedo determinar qué está mal aquí? He leído casi todo lo que puedo encontrar aquí en StackOverflow, http://pythonhosted.org/python-gnupg/#getting-started y el grupo de google para python-gnupg.

¿Por qué tengo 2 juegos de llaveros separados en primer lugar?

editar: aclaró que hay 2 grupos separados de público y público

edición 2: la respuesta a continuación fue fundamental para llegar al problema real. el constructor gnupg.GPG () está configurando las opciones de línea de comando gpg que incluyen ''no-tty'', llamando a gnupg.GPG (opciones = '''') resuelve el problema y cifra con éxito tanto los datos como los archivos.