我需要将代码从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%2BHM1XwyX3Dm0h%2F0uAxORfpa3waq0iOemkUYBq2lXDEU%3D
答案 0 :(得分:0)
最新版本的phpseclib是0.3.1所以,首先,我建议您升级。
第二......默认情况下,phpseclib执行OAEP填充。默认情况下,C#可能正在进行PKCS1填充。因此,在使用PHP进行实际解密之前,您需要执行$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
。