Ошибка MDC при расшифровке сообщения GPG - PullRequest
2 голосов
/ 15 сентября 2010

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

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

gpg.exe --batch --yes --recipient% 1 - выходной% 4 - идентификационная фраза% 5 - локальный пользователь% 2 --sign -зашифровать% 3

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

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

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

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

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

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

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

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

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

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

1 Ответ

3 голосов
/ 20 сентября 2010

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

...