Crypt_RSA phpseclib3 PHP 8 Issue



正如标题所说:

我们最近已经升级到PHP 8,但是Crypt/RSA.php已经被弃用,并且在PHP 8中将不再支持,所以我们被迫寻找另一个解决方案。

我听说phpseclib3是相同的,能够支持它,但是,我不能让它工作。

这是我当前的代码:

$rsa = phpseclib3CryptRSA::loadPrivateKey($private_key);
$rsa = $rsa->withHash('sha256'); 
$rsa = $rsa->withPadding(RSA::SIGNATURE_PKCS1);
$ans = $rsa->sign("test");
echo $ans;

这是前面有效的代码:

$rsa = new Crypt_RSA();
$rsa->loadKey($private_key);
$rsa->setHash('sha256');     // Specify digest, e.g. sha256 (default is sha1)
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
$signature = base64_encode($rsa->sign($string_to_encrypt));

使用新代码,我得到这个错误:未捕获的OutOfRangeException:签名代表超出xxx 的范围钥匙是一样的,所以肯定,这不是钥匙的问题,我无法找出是什么错了,有人能帮我吗?

任何帮助都是感激的!

测试重点:

-----BEGIN RSA PRIVATE KEY-----
MIICXwKBAQACgYDWZIPLr6mbty5UIwUnnP8RGjZnrAA1tlQXyqOS89h9LwLwsvlr
8u+1t1iGb+J4wFU34iYTKiHiA2U5Ik5eNnHDR1r9g+UcoM98gQA67D4Ns2+lTHSn
53Bfp/6RvkOPkQq1u6E0zz6bXAXcpZX6kBPIeF4gq+vRj62tprZ90DfuSQKBAwEA
AQKBgKdRfNZbOshPFvYM+rnmud3UEj+oqeVBbbG/sRc//WX9aZMGashHqbKs64bI
DPxmRlu9wC9Ww2jLc5U6Y+T9IpxyCBddx93iiGVFVYxAwYMT16gp/RV5RJOh4779
z7QxDvf3h+pCMLry581Irq+qInVuMKB1NCcdfYYYcoOSLz9tAoFA6lbLDDFA++UN
+xSYUOX4M+QdDpkbKc3R3tRhXRG1hD1s6cT/FZtikoK56XktE8LV9jYbfW78ukK7
mCVenBXwqwKBQOo1ufanHxjW31ntAjgh7wqpDscVW3fOtH5Yb/zbfgp70zNU6S4t
o7CMMvllZq4aJIq+s/afKlLt8r4lRSjRJNsCgUBSsdQvdkYfXgJkAy2JBs5iyXHz
j9YFF4ujHcFKDZDHnMGNcSYvIslTOGyQ1mEw4wWMQCXNSthGhnwawb00SY3HAoFA
UsgCnsebGjB4aVR4QFbeIqp2aq+F0ObirPWdP4ZlGleB4tbURFolTTWAnt3UWR0s
ZU3aVgUT9JPeBI8vzql9mQKBQOX+pnnO5iWu+F2FFzSfM7g3ENCmjSEJ7xBXXUA/
LJVdk0rQRbl1XojjSEGp85NS4EncWo1JFyAXBh7ZC24LAzc=
-----END RSA PRIVATE KEY-----

找到了解决方案,可以通过OpenSSL进行RSA签名。

最新更新