Pregunta

Tengo un sistema cliente-servidor y que pasan con regularidad las tareas programadas y se comunican a través de archivos XML que han sido cifrados por GPG. Todas las claves públicas requeridas han sido intercambiados con éxito entre el cliente y el servidor. Las llamadas de cifrado y descifrado se están haciendo desde un archivo por lotes.

cifrar la sintaxis

gpg.exe --batch --yes --recipient% 1 --output% 4% 5 --passphrase --local-usuario% 2 --sign --encrypt% 3

descifrar la sintaxis

gpg.exe --batch --yes --output% 3% 4 --passphrase --decrypt% 2 2>% 1

El cliente crea un archivo XML, lo cifra con la clave pública GPG mediante servidor, con signos clave privada y lo carga en el sitio ftp del servidor. Servidor comprueba regularmente para los nuevos archivos en la carpeta FTP. Para cualquier nuevo archivo se descifra usando gpg y luego procesa el XML dentro del archivo.

Para algunos de los archivos XML que el servidor intenta descifrar, recibo un error de la siguiente manera:

gpg: block_filter 00AA8400: error de lectura (tamaño = 7,841, a-> size = 395)

gpg: mdc_packet con codificación no válida

gpg: Error en el Descifrado: inválido paquetes

gpg: block_filter: bytes pendientes

El punto a destacar es que esto no está sucediendo con todos los archivos pero con sólo algunos archivos. No he podido encontrar ninguna coincidencia entre los archivos que se produce un error en.

Hay alguien familiarizado con lo que significa esta error? alguna sugerencia para ayudar a rastrear esto abajo son bienvenidos.

¿Fue útil?

Solución

Finalmente lo descubrió. gpg no era el culpable aquí. cuando el servidor estaba revisando los archivos en la carpeta especificada, fue utilizando el método Append (FileHandler) en Delphi a prueba si se puede abrir el archivo. Sin embargo, este método tenía una condición peculiar como si se encuentra el carácter ASCII 26 (es decir, Ctrl + Z) en el último bloque de bytes 128 del archivo, se eliminaría todo, desde ese carácter hasta el final del archivo. Esto hizo que una parte de los archivos cifrados que desea eliminar y, posteriormente, causó el error anterior cuando el descifrado a través de GPG. Después de que sustituye el método Append con Reset (FileHandler), archivos cifrados ya no modificado y descifrado funciona perfectamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top