簡體   English   中英

phpseclib 2 RSA 解密工作正常,但 phpseclib 3 RSA 解密不能正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM