PGP加密-PHP openssl

PGP加密-PHP openssl,php,openssl,rsa,pgp,Php,Openssl,Rsa,Pgp,我在本地“key.key”文件中有此RSA 2048密钥: 如何在PHP中使用它来加密要发送的字符串?我在一个共享的托管环境中,无法安装GNUpg,所以我认为附带的OpenSSL功能是一个不错的选择 我尝试了这个,但是我得到“…key参数不是有效的公钥…” OpenSSL不支持OpenPGP,格式和协议不同。与PHP一起,最合理的方法是使用接口连接GnuPG,我在问题中提供了一个示例。如果您可以从PHP执行任意应用程序,那么直接访问GnuPG可能是可能的,但这很可能会受到限制(并且在可利用性方面

我在本地“key.key”文件中有此RSA 2048密钥:

如何在PHP中使用它来加密要发送的字符串?我在一个共享的托管环境中,无法安装GNUpg,所以我认为附带的OpenSSL功能是一个不错的选择

我尝试了这个,但是我得到“…key参数不是有效的公钥…”


OpenSSL不支持OpenPGP,格式和协议不同。与PHP一起,最合理的方法是使用接口连接GnuPG,我在问题中提供了一个示例。如果您可以从PHP执行任意应用程序,那么直接访问GnuPG可能是可能的,但这很可能会受到限制(并且在可利用性方面相当危险)


如果您被要求发送OpenPGP加密消息,但无法访问GnuPG和此模块,请找到另一家提供GnuPG的托管公司,请您当前的提供商这样做,或者设置您自己的web服务器。

OpenPGP和SSL没有任何共同之处,但使用情况类似,并且都主要使用RSA。但就是这样。有一个适用于PHP的GnuPG模块,请参阅以了解详细信息。在共享主机上,GnuPG很可能已安装并可用。大多数共享托管环境都是由Linux运行的,几乎所有Linux发行版都在其软件包管理器中使用GnuPG。它不在我的软件包管理器中,我尝试运行它,但我得到了一个错误,当某个函数不存在时,我总是会遇到这个错误,因此我需要一个替代方法。由于它是一个可下载的库,所以最终使用了
phpseclib
。我的同事和我正在使用PGP以外的其他格式使其工作。谢谢
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

...
...
...
-----END PGP PUBLIC KEY BLOCK-----
<?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;