簡體   English   中英

使用 phpseclib 的 RSA 解密失敗

[英]RSA Decryption with phpseclib is failing

我有使用 RSA 加密字符串並將加密數據發送到 PHP web 服務器的移動應用程序。

經過搜索我發現phpseclib用於解密RSA Latest version 2.0。

盡管使用了模式,但無論我做什么,我都會收到錯誤消息

難道我做錯了什么?

我試過的:

解密私鑰:

-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAJyHUgC1ijhsETeuoNMh4c4yrFoL4juL/yDderMC9fBd1TFgEoJ5dxzMzdlzVVj7Vc/H/I+k13yY3W0MknS//k8CAwEAAQJAaaL1l57s8lkUYZTL2tFh9+vA32BnxLIdc0ullAwqeJV21wXcEyDA67fbmBywdt+pVKkeO2NU7fD3e+DZREuJ0QIhAPZNo9jirkRl4i/Lv3jWt6SmeUBeyIKK0u4lZiBF9KAZAiEAorDjj2c9WBdP46S9hK7yj0U5/0QHB0pO01j9QSVBvqcCIQDrYre7hqdU5qmLVATgzxMiX5ZxViP53gJHZaZ8IV7vwQIgTTYEGafWjjsqGBC0PQdGaMZi+wnPCB+0/0rpjoRfClsCIBPzZw+lappnVxXHuUoQQeN6uevqSvmgvC42UyA4HABa
-----END RSA PRIVATE KEY-----

加密消息(base64編碼):

SMZiVTAMizngWa5Yg2Xp0F3Coy4cIsLB6mru2rLhxnvS2SC\/rm9pgPVLdA\/hp+1TIbzHZqjc2lnP\nkvzh797WlA==\n

PHP 示例代碼:

$rsa = new RSA();
$rsa->setEncryptionMode(RSA::ENCRYPTION_PKCS1);
$rsa->loadKey($privateKey); 
echo $rsa->decrypt(base64_decode($strBase64));

結果:

Notice: Decryption error in C:\xampp\htdocs\webservice\vendor\phpseclib\phpseclib\phpseclib\Crypt\RSA.php on line 2553

模式:

$rsa->setEncryptionMode(RSA::ENCRYPTION_OAEP); 

結果:

Notice: Decryption error in C:\xampp\htdocs\webservice\vendor\phpseclib\phpseclib\phpseclib\Crypt\RSA.php on line 2432

模式:

$rsa->setEncryptionMode(RSA::ENCRYPTION_NONE); 

結果:

string(128) "I�W��B'q����;k��}�1������=��x���*���_��aq�)�D� '�m{��� ��n���C:��t �E����R=�S�y�3$QC�EV.3C�{�.Y�jx�6��!�e�˱]�I ����S�/�'I�|"

正如James J Polk所觀察到的那樣,您的base64編碼的字符串中包含一些錯誤字符。 idk您在PHP中使用什么作為分隔符,但這對我有用:

$strBase64 = 'SMZiVTAMizngWa5Yg2Xp0F3Coy4cIsLB6mru2rLhxnvS2SC\/rm9pgPVLdA\/hp+1TIbzHZqjc2lnP\nkvzh797WlA==\n';
$strBase64 = str_replace(['\/', '\n'], ['/', ''], $strBase64);

如果您使用雙引號而不是單引號,請執行以下操作:

$strBase64 = "SMZiVTAMizngWa5Yg2Xp0F3Coy4cIsLB6mru2rLhxnvS2SC\/rm9pgPVLdA\/hp+1TIbzHZqjc2lnP\nkvzh797WlA==\n";
$strBase64 = str_replace(['\/', "\n"], ['/', ''], $strBase64);
$rsa = new RSA();
  $rsa->setEncryptionMode(RSA::ENCRYPTION_OAEP);
  $ciphertext = base64_decode($string);
  $rsa->setMGFHash('sha1');
  $rsa->setHash('sha256');
  $rsa->loadKey($pkey); // public key
  $output = $rsa->decrypt($ciphertext);
 return $output;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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