У меня есть этот ключ RSA 2048 в локальном файле «key.key»:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
...
...
...
-----END PGP PUBLIC KEY BLOCK-----
Как я могу использовать его в PHP для шифрования строки для отправки? Я нахожусь в среде общего хостинга, и я не могу установить GNUpg, поэтому я решил, что включенные функции OpenSSL — это путь.
Я пробовал это, но я получаю «… параметр ключа не является допустимым открытым ключом …»
<?php
$text = 'hello jeremy how are you';
$key = openssl_pkey_get_public(chunkfile_get_contents('key.key'));
openssl_public_encrypt($text, $encrypted, $key);
echo $crypted;
exit;
OpenSSL не поддерживает OpenPGP, форматы и протоколы разные. Вместе с PHP самый разумный путь — это взаимодействие с GnuPG с использованием PHP-модуль GnuPG, Я привел пример в вопросе Шифровать файлы с помощью PGP в PHP?. Прямой доступ к GnuPG может быть возможен, если вы можете выполнять произвольные приложения из PHP, но это, скорее всего, будет ограничено (и значительно более опасно в отношении возможности использования).
Если вас просят отправлять зашифрованные сообщения OpenPGP, но у вас нет доступа к GnuPG и этому модулю, найдите другую хостинговую компанию, предоставляющую GnuPG, попросите вашего текущего провайдера сделать это или настройте собственный веб-сервер.
Других решений пока нет …