PHP openssl_public_加密 “key parameter is not a valid key”

标签 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 参数不是有效的公钥......

我的代码中是否做错了什么? 请帮忙!

最佳答案

您可能需要添加 -----BEGIN RSA PUBLIC KEY----------END RSA PUBLIC KEY----- > key blob 之前和之后。而且您可能还需要使用 chunk_split,因为 OpenSSL is pretty picky .

实际上,我建议使用 phpseclib, a pure PHP RSA implementation 。除其他外,它具有更通用的 key 处理功能。

关于PHP openssl_public_加密 “key parameter is not a valid key”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19243829/

相关文章:

php - key 128 位,返回数组 16 位

cmake - CMake 中 OpenSSL Crypto 的静态链接

php - MySQL 查询根据特定标记组合在获取行时返回不需要的行

php - CCK字段输出静态html内的值

php - 如果上一页 == X.com 则运行 PHP 查询

ssl - 带有证书、私钥和密码短语的 TLS

openssl - 在 CentOS 6.5 上更新 OpenSSL

java - 为什么 Java KeyStore 在加载 OpenPGP key 时失败?

git - key_load_public : invalid format

javascript - 如何使用html5生成临时公钥