【发布时间】:2014-05-11 04:14:06
【问题描述】:
我想在 ASP.Net 中解密文本。
在 PHP 中解密文本的工作代码是:
function rsaDecryption($dataEncrypted, &$dataDecrypted)
{
// Decrypt argument
$key = openssl_pkey_get_private(RsaKeyPrivate, RsaKeyPassphrase);
if (FALSE == $key)
{
echo("Failed to get the private key<br />\n");
return false;
}
if(!openssl_private_decrypt($dataEncrypted, $dataDecrypted, $key))
{
echo("Failed to decrypt message.<br />\n");
return false;
}
return TRUE;
}
我在网上看到了几篇文章,但我都不清楚。这个article (16319559) 和我问的相反,但也不是很清楚。
私钥看起来像这样
String myPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\n<whole bunch of characters>==\n-----END RSA PRIVATE KEY-----
什么是等效的 C# 方法?
更新:
我使用几个答案创建了一个方法。
使用 PEM 函数解码基于字符串的密钥,请参阅 here。
OpenSSL 代码,DecodeRsaPrivateKey() 和 GetIntegerSize(),参见here。
我还需要以下内容:
String strArgHtmlDecoded = HttpUtility.UrlDecode(dataEncrypted);
Byte[] byArgNo64 = Convert.FromBase64String(strArgHtmlDecoded);
结果
Byte[] byArgDecrypted = oProviderRsa.Decrypt(byArgNo64, false);
strDecrypted = Encoding.Default.GetString(byArgDecrypted);
【问题讨论】:
-
我认为我通过研究回答了我自己的问题。测试后不久将发布我的答案,以帮助其他人。
-
该解决方案与另一个解决方案相结合使我走了大部分路,只是我收到错误,请参阅更新。
标签: c# php asp.net encryption openssl