如何解密在C#中使用RSA加密的文本[重复]
This question already has an answer here:
- Encrypt and Decrypt text with RSA in PHP 6 answers
I need to convert code from C# to PHP, with identical results. In C# I finished it pretty quickly, but now need to convert the following code to php:
public static string RsaDecrypt(string privateKey, string src)
{
CspParameters csp = new CspParameters();
csp.Flags = CspProviderFlags.UseMachineKeyStore;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
rsa.FromXmlString(privateKey);
return RsaDecrypt(rsa, src);
}
public static string RsaDecrypt(RSACryptoServiceProvider rsa, string src)
{
byte[] srcData = Convert.FromBase64String(src);
byte[] destData = rsa.Decrypt(srcData, false);
return Encoding.UTF8.GetString(destData);
}
I'm trying to hours and I can not, I'm using the phpseclib0.2.1a file and the code:
The Problem in PHP is returning the following error:
Notice: Decryption error in E:\AppServWWW\Request\Flash\Crypt\RSA.php on line 1582
@EDIT: My $_GET["p"] is
cwQPQLSW%2FQ70AUmBzkZ9c7d9MrEAcPAAN1lRG937XZuibDOE304i8894uowlC1OANnWEim6suOxzhEHZl0BR1G1audk4CWG1TUSqAo4MO5FBfVbmcLVMx1KPV9%2FeMzil%2BHM1XwyX3Dm0h%2F0uAxORfpa3waq0iOemkUYBq2lXDEU%3D
</div>
此问题已经存在 这里有一个答案: p>
-
使用PHP中的RSA加密和解密文本
6 answers
li>
ul>
div>
我需要将代码从C#转换为PHP,结果相同。 C#我很快就完成了,但现在需要将以下代码转换为php: p>
public static string RsaDecrypt(string privateKey,string src) { CspParameters csp = new CspParameters(); csp.Flags = CspProviderFlags.UseMachineKeyStore; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); rsa.FromXmlString(privateKey); 返回RsaDecrypt(rsa,src); } \ n public st atic string RsaDecrypt(RSACryptoServiceProvider rsa,string src) { byte [] srcData = Convert.FromBase64String(src); byte [] destData = rsa.Decrypt(srcData,false); 返回Encoding.UTF8。 GetString(destData); } code> pre>
我正在尝试几个小时而我不能,我正在使用 phpseclib0.2.1a 文件和代码: p>
Pastebin p>
PHP中的问题返回以下错误: p>
注意 strong>:第1582行E:\ AppServWWW \ Request \ Flash \ Crypt \ RSA.php中的解密错误 p> blockquote >
@EDIT 强>:我的$ _GET [ “p”]是 p>
cwQPQLSW%2FQ70AUmBzkZ9c7d9MrEAcPAAN1lRG937XZuibDOE304i8894uowlC1OANnWEim6suOxzhEHZl0BR1G1audk4CWG1TUSqAo4MO5FBfVbmcLVMx1KPV9%2FeMzil%2BHM1XwyX3Dm0h %2F0uAxORfpa3waq0iOemkUYBq2lXDEU%3D p> blockquote> div>
The latest version of phpseclib is 0.3.1 so, first, I'd recommend you upgrade.
Second... phpseclib does OAEP padding by default. C# is probably doing PKCS1 padding by default. So you'd need to do $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
before doing the actual decryption in PHP.