PHP openssl_public_encrypt“密钥参数不是有效密钥" [英] PHP openssl_public_encrypt “key parameter is not a valid key”

查看:1666
本文介绍了PHP openssl_public_encrypt“密钥参数不是有效密钥"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的公用密钥存在于名为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆