в php как найти уже зашифрованный файл в конкретной папке - PullRequest
1 голос
/ 07 декабря 2009

Я использую PGP (GNU Privacy Guard) для шифрования файла. во время шифрования я удалил расширение .pgp зашифрованного файла.

Теперь я хочу узнать, какой файл уже зашифрован в определенной папке.

Примечание: - моя цель состоит в том, чтобы ... не шифровать ни один файл дважды ... поэтому перед шифрованием любого файла ... я хочу проверить, является ли файл уже зашифрованным.

в php мы можем узнать, какой файл уже зашифрован?

Ответы [ 4 ]

3 голосов
/ 07 декабря 2009
Файл

PGP начинается с "-----BEGIN PGP MESSAGE-----".

Так что вы можете сделать что-то вроде этого:

  $content = file_get_contents($filename);
  $encrypted = strpos($content, '-----BEGIN PGP MESSAGE-----') === 0;
0 голосов
/ 10 января 2013

Существует два возможных формата данных 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";
0 голосов
/ 07 декабря 2009

Вы не можете, если вы не понимаете алгоритм, используемый в шифровании. Как только вы поймете это, вы можете применить это, чтобы проверить, не зашифрован ли уже файл.

Также убедитесь, что в PGP уже есть функция для проверки того, что что-то уже зашифровано. Обычно это присутствует в решениях для шифрования.

Спасибо

0 голосов
/ 07 декабря 2009

Я действительно мало знаю о том, как он работает, или как вы можете посмотреть на содержимое файла, чтобы определить, правильно ли он зашифрован, но не могли бы вы попытаться расшифровать их? Если вы знаете, что работаете только с простыми текстовыми файлами, вы можете проверить первые 500 байт расшифрованных данных и, если есть странные символы (за пределами стандартного az AZ 0-9 + пунктуация и т. Д.), Это может быть подсказкой что файл не был зашифрован.

Я действительно знаю, что это наполовину слабый ответ, но он был немного длинным, чтобы вписаться в комментарий.

...