PHP openssl_public_encrypt“关键参数不是有效密钥”

时间:2013-10-08 09:23:47

标签: php openssl public-key

我的公钥名为publickey.key 并且该文件的内容是这个,

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtixUGzGpLXgZ7AV1HfmIHV/FEF+fww77FekRc2oLhUOd4HitwCPo76fjtdsQBEt8w9HZ3CXVphaAU2BA6MEZJ3ShVMsdAXb2ZA1C+lu7k1GV9M/BhucTg35HujSK647Sc5MwVLwFsN80dAnGsZF8gwb2TNUzXHwzbAb30T01zuqf8RCM75OwKZFYqzu7FOVrtk/w9mh92MOXG0l7WSqNIctu8Kxka/tEJJIA5nqMGNMocjwprXy66NS7FFy1GY+NnxfFLtODqq0tllc50UCDsnqSvNmj2wcnAcsCzNOoxPPgp7t8S+sQvOzgc5W3CDjIsYEiGD+vzSVNkGiRou577wIDAQAB

///////在我的.php文件中,我按照以下步骤使用此公钥加密我的字符串

$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]:key参数不是......中的有效公钥。

我的代码中是否有一些错误? 请帮忙!

1 个答案:

答案 0 :(得分:1)

您可能需要在密钥blob之前和之后添加-----BEGIN RSA PUBLIC KEY----------END RSA PUBLIC KEY-----。而且你可能也需要使用chunk_split,因为OpenSSL is pretty picky

但是,我建议使用phpseclib, a pure PHP RSA implementation。除了其他方面,它还具有更多功能的键处理功能。