Шифровать файлы с помощью PGP в PHP?
Я хочу использовать шифрование PGP для шифрования CSV-файлов, которые я генерирую с помощью PHP-скрипта, а затем отправляю этот файл клиенту по электронной почте. Клиент предоставит мне ключ шифрования, который мне нужно использовать для шифрования файлов.
Я погуглил о PGP и обнаружил, что это довольно хорошая конфиденциальность, также я нашел OpenPGP http://www.openpgp.org / и GnuPG http://www.gnupg.org / Каковы эти два типа PGP? и какой из них мне следует использовать?
Также как зашифровать файлы использование PGP в PHP с ключом, который предоставит мой клиент?
Я впервые услышал этот термин, может кто-нибудь, пожалуйста, помочь в понимании этого и реализации этого в PHP.
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.