Errore di mdc quando decifrare un messaggio GPG
-
03-10-2019 - |
Domanda
Ho un sistema client-server e che regolarmente eseguito le operazioni pianificate e comunicare attraverso file XML che sono stati crittografati con gpg. Tutte le chiavi pubbliche richiesti sono stati scambiati con successo tra il client e il server. Le chiamate di crittografia e decrittografia sono stato fatto da un file batch.
Encrypt sintassi
gpg.exe --batch --Sì --recipient% 1 --output% 4% --passphrase 5 --local-utente% 2 --sign --encrypt% 3
decifrare la sintassi
gpg.exe --batch --Sì --output% 3 --passphrase% 4% --decrypt 2 2>% 1
Il client crea un file XML, crittografa con gpg utilizzando la chiave pubblica del server, cartelli con la chiave privata e lo carica sul sito FTP del server. Server regolarmente i controlli per i nuovi file nella cartella ftp. Per ogni nuovo file decripta usando gpg e poi elabora il file XML all'interno del file.
Per alcuni dei file XML che il server tenta di decifrare, ricevo un errore come segue:
gpg: block_filter 00AA8400: errore di lettura (size = 7841, a-> size = 395)
gpg: mdc_packet con la codifica non valida
gpg: decrittazione non riuscita: non valida pacchetto
gpg: block_filter: byte in attesa
Il punto da notare è che questo non sta accadendo con tutti i file ma con solo alcuni file. Non sono stato in grado di trovare qualsiasi comunanza tra i file che non riesce a.
C'è qualcuno familiare a cosa significa questo errore? eventuali suggerimenti per contribuire a rintracciare questo giù sono i benvenuti.
Soluzione
Finalmente capito. gpg non era il colpevole qui. quando il server era il controllo per i file nella cartella specificata, è stato con il metodo Append (filehandler) su Delphi per verificare se il file può essere aperto. Ma questo metodo ha una condizione particolare, come se si trova il carattere ASCII 26 (cioè CTRL + z) nell'ultima 128 blocco byte del file, sarebbe rimuovere tutto dallo carattere fino alla fine del file. Questo ha causato una certa parte dei file crittografati da eliminare e, successivamente, ha causato l'errore di cui sopra quando decifrare attraverso gpg. Dopo ho sostituito il metodo Append di Reset (filehandler), file crittografati non erano più modificato e decifratura funziona perfettamente.