【发布时间】:2016-07-25 10:44:50
【问题描述】:
接收方给了我一个公钥,我需要用它来加密用户名和密码。我做了各种研发,但没有任何效果。 我用过
function public_encrypt($plaintext)
{
$fp=fopen("private.key","r");
$pub_key=fread($fp,8192);
fclose($fp);
openssl_get_publickey($pub_key);
openssl_public_encrypt($plaintext,$crypttext, $pub_key);
return(base64_encode($crypttext));
}
但它给了我openssl_public_encrypt(): key parameter is not a valid public key 错误。
我还为键添加了开始和结束行,但仍然没有成功 由于我是新手,请指导我遵循的步骤。
【问题讨论】:
-
$pubkey=openssl_get_publickey($pub_key);
-
我试过了。在加密中使用了 $pubkey,仍然没有成功。仍然得到同样的错误。请帮忙。
-
获取公钥需要证书文件
-
有趣的是,您将 public key 命名为 private.key。这里的问题是您没有收到格式正确的密钥。问题的第二部分是你不能用公钥加密任何数量的数据,有一个限制而且它相当小。公钥/私钥加密通常用于在两方之间传输对称密钥。如果我是你,我会要求一个 PEM 格式的公钥,这样你就不必经历试图强迫它自己进入 openssl 理解的过程。
-
另外,@Jonasw - 你从哪里读到以
----PUBLIC KEY START----开头的公钥?这不是任何编码格式中的正确分隔符。
标签: php encryption rsa public-key-encryption