[英]phpseclib 2 RSA decryption works fine but phpseclib 3 RSA decryption not work properly
phpseclib2 示例-工作
use phpseclib\Crypt\RSA;
$rsa = new RSA();
$rsa->loadKey($PRIVATE_KEY);
$key = $rsa->decrypt(base64_decode($a));
phpseclib3 示例-不工作
use phpseclib3\Crypt\PublicKeyLoader;
$private = PublicKeyLoader::load($PRIVATE_KEY);
$key = $private->decrypt(base64_decode($a));
對於 RSA,V2 和 V3 默認使用 OAEP,但 V2 使用 SHA1 作為 OAEP 和 MGF1 摘要的默認值,而 V3 使用 SHA256(參見此處和此處)。
因此,為了使 V2 的解密也適用於 V3,V3 中的摘要必須顯式設置為 SHA1:
$decrypted = $private->withHash("sha1")->withMGFHash("sha1")->decrypt(base64_decode($a));
請注意,SHA1 被認為是不安全的,但在 OAEP 的上下文中沒有已知的安全問題,請參閱此處了解更多詳細信息。
但是,如果只是為了支持從生態系統中消除 SHA1,沒有理由不切換到 SHA256(盡可能)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.