Существует два возможных формата данных OpenPGP: двоичный и ascii.
Файлы в формате Ascii легко узнать, посмотрев «----- BEGIN PGP MESSAGE -----», что также можно сделать с помощью команды unix file
:
$ file encrypted
encrypted: PGP message
@ ZZ_Coders ответ вполне подходит, если вы имеете дело только с зашифрованными файлами в формате ascii.
Если он показывает что-то еще, это не сообщение OpenPGP - или в двоичном формате. Это не так легко распознать (по крайней мере, я не знаю, какие магические пакеты вы могли бы искать), но вы можете легко использовать команду gpg
для проверки файла:
$ gpg --list-only --list-packets encrypted
:pubkey enc packet: version 3, algo 1, keyid DEAFBEEFDEADBEEF
data: [2048 bits]
:encrypted data packet:
length: 73
mdc_method: 2
Если он не зашифрован, ответ будет выглядеть следующим образом:
$ gpg --list-only --list-packets something_else
gpg: no valid OpenPGP data found.
В PHP вы можете использовать этот код, чтобы проверить, не зашифрован ли файл OpenPGP:
if (strpos(`gpg --list-only --list-packets my_file.txt 2>&1`,
'encrypted data packet'))
echo "encrypted file";