phpseclib3中RSA加载密钥生成签名时出现final类调用错误
问题解决:phpseclib3 RSA签名报错处理
错误原因
你代码里的问题在于重复加载私钥:PublicKeyLoader::loadPrivateKey已经返回了phpseclib3\Crypt\RSA\PrivateKey实例,无需再通过RSA::createKey()->loadPrivateKey重复加载。后者会调用final类的load方法,触发报错。
修正后的代码
直接使用PublicKeyLoader加载后的私钥对象,链式调用签名配置方法即可:
use phpseclib3\Crypt\PublicKeyLoader; $privateKey = PublicKeyLoader::loadPrivateKey($private_key, $private_key_password); return $privateKey->withHash('sha256') ->withMGFHash('sha256') ->withSaltLength(32) ->sign($signing_string);
说明
PublicKeyLoader::loadPrivateKey会自动识别密钥类型并返回对应私钥实例,无需再通过RSA类二次处理- 链式调用
withHash、withMGFHash等方法可以直接配置签名参数,最后调用sign生成签名字符串
内容的提问来源于stack exchange,提问作者Gajanan Chitare
相关产品推荐
相关产品推荐

