Проверить зашифрованный файл на наличие пустого содержимого

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

Если я попытаюсь расшифровать один из этих файлов, я получу:

gpg: не может обработать эти неоднозначные данные подписи

Есть ли способ проверить, что файл не имеет содержимого для заголовка, чтобы я мог настроить его на более элегантный отказ?


person MrEdmundo    schedule 15.10.2010    source источник


Ответы (2)


Согласно сообщению в списке рассылки, официальному PGP инструмент имеет ошибку, из-за которой иногда он выдает искаженные сообщения. Вы можете проверить, так ли это для вашего конкретного файла, запустив gpg --list-packets path/to/encrypted/file.pgp и просмотрев вывод. Если вы видите :onepass_sig packet:, за которым сразу же следует :signature packet:, то это, вероятно, то, что происходит.

По моему (ограниченному) опыту, это происходит, если отправитель пытался зашифровать пустой файл. К сожалению, поскольку шифрование предназначено для того, чтобы затруднить просмотр того, что находится внутри, трудно сказать, так ли это на самом деле, до того, как вы попытаетесь его расшифровать. Вывод gpg --list-packets даст вам некоторую информацию, но я заметил, что вывод :literal data packet: обычно говорит «необработанные данные: 0 байт», даже если сообщение содержит непустой файл.

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

person Screwtape    schedule 21.06.2012

Предполагая, что вы используете сценарий оболочки unix, вы можете сначала выполнить '[ -s /the/file ]', прежде чем пытаться расшифровать GPG.

person Jason Martin    schedule 08.02.2011