接口生成签名为空的问题

总是提示openssl_sign(): supplied key param cannot be coerced into a private key。我换了系统本机是WIN7,在linux系统下也不行?
网络上面有人说,在沙箱中,私钥需要转化,我直接在正式的环境中也报错。同时在支付宝中公钥验签成功。

    
       
        $priKey=$this->rsaPrivateKey;
        $res = "-----BEGIN RSA PRIVATE KEY-----" .PHP_EOL.
            wordwrap($priKey, 64, "\n", true) .PHP_EOL.
            "-----END RSA PRIVATE KEY-----";
        ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');
        if ("RSA2" == $signType) {
            openssl_sign($data, $sign, $res, version_compare(PHP_VERSION,'5.4.0', '<') ? SHA256 : OPENSSL_ALGO_SHA256); 
        } else {
            openssl_sign($data, $sign, $res);
        }
        $sign = base64_encode($sign);
        return $sign;

在本机是WIN7 64位,同时环境是phpstudy

我在OS上面提问好久都没有回,不知道是什么原因,一点方向都没有了。

阅读 9.9k
2 个回答

私钥格式不正确,看你代码是拼接最后多了换行符,去掉一个试试

我也遇到这样问题 是因为私钥中有换行 删除换行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题