2010-09-15 6 views
2

У меня есть клиентская и серверная система, которая регулярно запускает запланированные задачи и обменивается данными через xml-файлы, зашифрованные gpg. Все необходимые открытые ключи были успешно обменены между клиентом и сервером. Вызовы шифрования и дешифрования выполняются из пакетного файла.Ошибка mdc при расшифровке сообщения GPG

Синтаксис шифровать

gpg.exe --batch --yes --recipient% 1 --output% 4% 5 --passphrase --local пользователь% 2% --sign --encrypt 3

расшифровывать синтаксис

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

клиент создает файл XML, шифрует его с gpg с использованием общедоступного ключа сервера, знаков с закрытым ключом и загрузки его на сервер ftp-сайта. Сервер регулярно проверяет наличие новых файлов в папке ftp. Для любого нового файла он расшифровывается с использованием gpg, а затем обрабатывает xml внутри файла.

Для некоторых из XML-файлов, которые сервер пытается расшифровать, я получаю ошибку следующим образом:

GPG: block_filter 00AA8400: ошибка чтения (размер = 7841, a-> размер = 395)

GPG: mdc_packet с неверной кодировкой

GPG: дешифрование не удалось: неверный пакет

GPG: block_filter: в ожидании байт!

Следует отметить, что это происходит не со всеми файлами, а с некоторыми файлами. Я не смог найти никакой общности между файлами, в которых он не работает.

Кто-нибудь знает, что означает эта ошибка? любые предложения, которые помогут отслеживать это, приветствуются.

ответ

3

Наконец-то выяснилось. gpg не был виновником. когда сервер проверял файлы в указанной папке, он использовал метод Append (fileHandler) в Delphi, чтобы проверить, можно ли открыть файл. Но этот метод имел своеобразное условие, как если бы он нашел символ ascii 26 (т. Е. CTRL + z) в последнем 128-байтовом блоке файла, он удалит все из этого символа до конца файла. Это заставило некоторую часть зашифрованных файлов удалить и впоследствии вызвало указанную выше ошибку при расшифровке ее через gpg. После того, как я заменил метод Append на Reset (fileHandler), зашифрованные файлы больше не были изменены и расшифровка работает отлично.