如何解密在C#中使用RSA加密的文本[重复]

如何解密在C#中使用RSA加密的文本[重复]

问题描述:

This question already has an answer here:

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:

Pastebin

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.