You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:18:16