1

我正在尝试使用我的私钥生成数据签名。

这段代码在我的本地机器上工作,而openssl_pkey_get_private在我的开发服务器上总是返回 false,所以它失败了。我明白了openssl_sign(): supplied key param cannot be coerced into a private key。服务器有什么问题吗?我需要修改我的任何服务器配置吗?

class MyClass {

    protected $pub = <<< EOT

    -----BEGIN RSA PUBLIC KEY-----

    ..Public Key....

    -----END RSA PUBLIC KEY-----
    EOT;

    protected $pri = <<<EOT

    -----BEGIN RSA PRIVATE KEY-----

    .. Private Key....


    -----END RSA PRIVATE KEY-----

    EOT;

    public function getSignature($data)
    {
        $signature = null;

        $priKey = openssl_pkey_get_private($this->pri);

        openssl_sign(iconv('UTF-8', 'UTF-16LE', $data), $signature, $priKey, "sha1WithRSAEncryption");

        return base64_encode( $signature );
    }
}
4

0 回答 0