openssl_sign(): supplied key param cannot be coerced into a private key解决方案

作者 : 超级管理员 本文共674个字,预计阅读时间需要2分钟 发布时间: 2021-07-29 共131人阅读

在做PHP 使用RSA2 数据加密签名的时候有时候 会出现这个错误

openssl_sign(): supplied key param cannot be coerced into a private key

原因:
本地测试正常,服务器报错
使用测试数据和测试秘钥,本地和服务器都正常
这种情况说明与PHP和OPENSSL版本无关(已经重新编译过PHP和OPENSSL,浪费好多时间)

RSA 的秘钥一般都有固定换行格式,是不是这种情况导致的呢
按照此格式试试,问题竟然顺利解决

私钥

$str='你的私钥(改成一行)';      

    $str = chunk_split($str, 64, "\n"); 

    $key = "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n"; 

     $signature = ''; 

     if (openssl_sign($data, $signature, $key, OPENSSL_ALGO_MD5)) { 

         echo base64_encode($signature); 

     }

公钥

$data='内容';
    $str='你的公钥(改成一行)';
    $str= chunk_split($str, 64, "\n");
     $key = "-----BEGIN PUBLIC KEY-----\n$str-----END PUBLIC KEY-----\n";
     $signature = "";
     if (openssl_verify(base64_decode($data), $signature, $key, OPENSSL_ALGO_MD5) == 1) {
          echo $signature;
      }
本站所发布的资源均来源于互联网,仅限用于研究学习,不得将软件用于商业或者非法用途,否则一切后果请用户自负!如果侵犯了您的权益请与我们联系!您必须在下载后的24个小时之内,从您的手机和电脑中彻底删除。 如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请与我们联系处理!
互利网 » openssl_sign(): supplied key param cannot be coerced into a private key解决方案

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整:可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

发表评论