PHP openssl_public_encrypt“密钥参数不是有效密钥" [英] PHP openssl_public_encrypt “key parameter is not a valid key”
问题描述
我的公用密钥存在于名为publickey.key的文件中 该文件的内容是这个,
I have my public key in a file named , publickey.key and the content of that file is this,
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIHV/FEF+fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsdAXb2ZA1C+lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nqMGNMocjwprXy66NS7FFy1GY+NnxfFLtODqq0tllc50UCDsnqSvNmj2wcnAcsCzNOoxPPgp7t8S+sQvOzgc5W3CDjIsYEiGD+vzSVNkGiRou577wIDAQAB
////////并且在我的.php文件中,我按照以下步骤使用此公钥加密我的字符串
/////// And in my .php file i am following below steps to encrypt my string using this public key
$fp=fopen ("publickey.key","r");
$publicKey=fread($fp,8192);
fclose($fp);
$encrypted = '';
$secret='what i want to encrypt';
if (!openssl_public_encrypt($secret, $encrypted, $publicKey))
{
die('Failed to encrypt data');
}
但我收到此错误.
警告:openssl_public_encrypt()[function.openssl-public-encrypt]:关键参数不是有效的公共密钥……
Warning: openssl_public_encrypt() [function.openssl-public-encrypt]: key parameter is not a valid public key in......
我的代码中是否存在某些错误? 请帮忙!
Is there some thing that i am doing wrong in my code? Help Please!
推荐答案
您可能需要在密钥Blob之前和之后添加-----BEGIN RSA PUBLIC KEY-----
和-----END RSA PUBLIC KEY-----
.而且您可能还需要使用chunk_split,因为 OpenSSL非常挑剔.
You probably need to add -----BEGIN RSA PUBLIC KEY-----
and -----END RSA PUBLIC KEY-----
before and after the key blob. And you might need to use chunk_split, too, because OpenSSL is pretty picky.
不过,实际上,我建议您使用 phpseclib,这是纯PHP RSA实现.除了其他功能外,它还具有更多的通用键处理功能.
Really, though, I'd recommend using phpseclib, a pure PHP RSA implementation. It has much more versatile key handling, among other things.
这篇关于PHP openssl_public_encrypt“密钥参数不是有效密钥"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!