如何在c#中解密使用RSA加密的文本

本文关键字:RSA 加密 文本 密使 解密 | 更新日期: 2023-09-27 18:16:49

我需要将代码从c#转换为PHP,结果相同。在c#中,我很快完成了它,但现在需要将以下代码转换为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);
}

我正在尝试几个小时,我不能,我正在使用phpseclib0.2.1a文件和代码:

Pastebin

PHP的问题是返回以下错误:

通知: E:'AppServWWW'Request'Flash'Crypt'RSA.php on line 1582出现解密错误

@EDIT: My $_GET["p"] is

cwQPQLSW % 2 fq70aumbzkz9c7d9mreacpaan1lrg937xzuibdoe304i8894uowlc1oannweim6suoxzhehzl0br1g1audk4cwg1tusqao4mo5fbfvbmclvmx1kpv9 % 2 femzil % 2 bhm1xwyx3dm0h % 2 f0uaxorfpa3waq0ioemkuybq2lxdeu % 3 d

如何在c#中解密使用RSA加密的文本

phpseclib的最新版本是0.3.1,所以,首先,我建议你升级。

第二……phpseclib默认情况下做OAEP填充。c#可能默认使用PKCS1填充。因此,在PHP中进行实际解密之前,您需要执行$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);