使用phpseclib的RSA解密失败

使用phpseclib的RSA解密失败,php,encryption,rsa,phpseclib,Php,Encryption,Rsa,Phpseclib,我有一个移动应用程序,它用RSA加密字符串,并将加密数据发送到PHPWeb服务器 搜索之后,我发现phpseclib用于解密RSA 最新版本2.0 无论我做什么,我都会收到错误信息,尽管使用了错误模式 我做错什么了吗 我所尝试的: 用于解密的私钥: -----BEGIN RSA PRIVATE KEY----- MIIBOgIBAAJBAJyHUgC1ijhsETeuoNMh4c4yrFoL4juL/yDderMC9fBd1TFgEoJ5dxzMzdlzVVj7Vc/H/I+k13yY3W0Mk

我有一个移动应用程序,它用RSA加密字符串,并将加密数据发送到PHPWeb服务器

搜索之后,我发现phpseclib用于解密RSA 最新版本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编码):

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
Notice: Decryption error in C:\xampp\htdocs\webservice\vendor\phpseclib\phpseclib\phpseclib\Crypt\RSA.php on line 2432
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�|"
模式:

结果:

Notice: Decryption error in C:\xampp\htdocs\webservice\vendor\phpseclib\phpseclib\phpseclib\Crypt\RSA.php on line 2553
Notice: Decryption error in C:\xampp\htdocs\webservice\vendor\phpseclib\phpseclib\phpseclib\Crypt\RSA.php on line 2432
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�|"
模式:

结果:

Notice: Decryption error in C:\xampp\htdocs\webservice\vendor\phpseclib\phpseclib\phpseclib\Crypt\RSA.php on line 2553
Notice: Decryption error in C:\xampp\htdocs\webservice\vendor\phpseclib\phpseclib\phpseclib\Crypt\RSA.php on line 2432
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);

你解码base64了吗?是的,我解码了。我现在不能测试php,但是你问题中的私有密码会解密你问题中的密码。不使用填充物。结果是一个可读的ASCII字符串。@JamesKPolk-idk您如何解密,但我无法解密OP的密文。我通过CLI执行了
openssl rsautl-decrypt-in encrypted.txt-out plaintext.txt-raw-inkey priv.pem
,并获得了“大于mod len的数据”。这是有意义的,因为密文的长度是65字节,而密钥的模长是64字节(512位)@neubert:我现在看到base64加密消息包含几个无效的转义“\”字符和嵌入的换行符。以下是删除这些字符后的值:
SMZiVTAMizngWa5Yg2Xp0F3Coy4cIsLB6mru2rLhxnvS2SC/rm9pgPVLdA/hp+1TIbzHZqjc2lnPkvzh797WlA==