0

我需要将代码从 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文件和代码:

巴斯宾

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

注意:第 1582 行 E:\AppServWWW\Request\Flash\Crypt\RSA.php 中的解密错误

@EDIT:我的 $_GET["p"] 是

cwQPQLSW%2FQ70AUmBzkZ9c7d9MrEAcPAAN1lRG937XZuibDOE304i8894uowlC1OANnWEim6suOxzhEHZl0BR1G1audk4CWG1TUSqAo4MO5FBfVbmcLVMx1KPV9%2FeMzil%2BHM1XwyX3Dm30h%2EU%荷兰语

4

1 回答 1

0

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

其次... phpseclib 默认情况下会进行 OAEP 填充。默认情况下,C# 可能正在执行 PKCS1 填充。因此,您需要$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);在 PHP 中进行实际解密之前执行此操作。

于 2013-06-04T21:26:31.923 回答