Я бы создал открытые / закрытые пары ключей S / MIME с использованием OpenSSL, а затем использовал команду OpenSSL для шифрования и дешифрования.Я считаю, что это лучше, чем использование PGP, потому что openssl включен в большинство операционных систем Linux, а PGP - нет.OpenSSL также основан на стандартах и, как правило, с ним легче работать, если у вас нет команд.
Я рекомендовал использовать «чистое PHP» решение (под чистым PHP я имею в виду делать шифрование на PHP, скореечем использование PHP для вызова существующей библиотеки или отдельного исполняемого файла).Вы не хотите делать массовое шифрование в PHP.Слишком медленно.И вы хотите использовать OpenSSL, потому что он высокопроизводителен и безопасность понятна.
Вот волшебство.
Чтобы создать ключ X.509:
$subj="/C=US/ST=California/L=Remote/O=Country Govt./OU=My Dept/CN=Mr. Agent/emailAddress=agent@investiations.com"
openssl req -x509 -newkey rsa:1024 -keyout mycert.key -out mycert.pem -nodes -subj $subj
Это помещает закрытый ключ в mycert.key и открытый ключ в mycert.pem.Закрытый ключ не защищен паролем.
Теперь, чтобы подписать сообщение с помощью S / MIME:
openssl smime -sign -signer mycert.pem -inkey mycert.key <input >output
Чтобы зашифровать сообщение с помощью S / MIME:
openssl smime -encrypt -recip yourcert.pem <input >output
Чтобы расшифровать сообщение с помощью S / MIME:
openssl smime -decrypt -inkey mycert.key -certfile mycert.pem <input >output
У меня также есть несколько демонстраций по использованию OpenSSL из привязок языка C, но не из PHP.