【发布时间】:2013-05-31 06:43:52
【问题描述】:
我需要将代码从 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 P>
【问题讨论】:
-
另外,请告诉我们哪一行是1582......
-
if ($lHash != $lHash2) { user_error('解密错误', E_USER_NOTICE);返回假; }
-
1) 您没有发布加密代码。 2) 将
Decrypt的第二个参数设置为false意味着您使用了错误的填充。 3) 考虑使用 AES 加密实际数据,仅使用 RSA 加密密钥。 RSA 只能用于加密短数据。