ошибка mdc при расшифровке сообщения GPG

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

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

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

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

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

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

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

gpg: block_filter 00AA8400: ошибка чтения (size = 7841, a- ›size = 395)

gpg: mdc_packet с недопустимой кодировкой

gpg: сбой дешифрования: недопустимый пакет

gpg: block_filter: ожидающие байты!

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

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


person EndlessSpace    schedule 15.09.2010    source источник


Ответы (1)


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

person EndlessSpace    schedule 20.09.2010