Шифровать файлы с помощью PGP в PHP?


Я хочу использовать шифрование PGP для шифрования CSV-файлов, которые я генерирую с помощью PHP-скрипта, а затем отправляю этот файл клиенту по электронной почте. Клиент предоставит мне ключ шифрования, который мне нужно использовать для шифрования файлов.

Я погуглил о PGP и обнаружил, что это довольно хорошая конфиденциальность, также я нашел OpenPGP http://www.openpgp.org / и GnuPG http://www.gnupg.org / Каковы эти два типа PGP? и какой из них мне следует использовать?

Также как зашифровать файлы использование PGP в PHP с ключом, который предоставит мой клиент?

Я впервые услышал этот термин, может кто-нибудь, пожалуйста, помочь в понимании этого и реализации этого в PHP.

Author: Prashant, 2013-04-12

1 answers

Вопрос 1: О PGP

  • PGP (Довольно хорошая конфиденциальность) - продукт и торговая марка корпорации Symantec (они купили ее несколько лет назад).
  • OpenPGP - это стандарт, используемый PGP.
  • GnuPG (Gnu Privacy Guard) - это бесплатная реализация PGP с открытым исходным кодом.

Итак, что вы хотите сделать, это зашифровать с помощью ключа OpenPGP. Какая реализация OpenPGP, используемая вашим клиентом для расшифровки данных, не важно для тебя. В PHP обычно используется GnuPG и есть встроенные интерфейсы.

Вопрос 2: Использование GnuPG в PHP

Используйте Интерфейс GnuPG, который является расширением, которое можно установить для PHP.

Сначала импортируйте ключ, где $keydata - защищенный открытый ключ ASCII:

<?php
$gpg = new gnupg();
$info = $gpg -> import($keydata);
print_r($info);
?>

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

<?php
  $gpg = new gnupg();
  $gpg -> addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");
  $enc = $gpg -> encrypt("just a test");
  echo $enc;
?>

Если вы хотите зашифровать файлы, прочитайте и передайте их encrypt(). Обязательно используйте по крайней мере длинные идентификаторы ключей (например, DEADBEEFDEADBEEF), лучшие отпечатки пальцев (как в примере) при ссылках на ключи; и никогда не используйте короткие идентификаторы ключей (DEADBEEF), так как они уязвимы для атак с столкновением.


Это более исчерпывающий пример для выполнения обоих , добавленный пользователем в руководстве по PHP.

 38
Author: Jens Erat, 2017-03-17 10:45:55