【问题标题】:ASP.Net equivalent of openssl_private_decrypt and openssl_pkey_get_privateASP.Net 等效于 openssl_private_decrypt 和 openssl_pkey_get_private
【发布时间】: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);

【问题讨论】:

  • 我认为我通过研究回答了我自己的问题。测试后不久将发布我的答案,以帮助其他人。
  • 好像已经在stackoverflow.com/a/251757/3325704解决了
  • 该解决方案与另一个解决方案相结合使我走了大部分路,只是我收到错误,请参阅更新。

标签: c# php asp.net encryption openssl


【解决方案1】:

我想通了。

答案是来自不同地方的代码集合。

评论中的链接是其中的一部分。我以前看过同一篇文章,但没有其他代码,我没有看到相关性。

查看我的更新以获得最终答案。

【讨论】:

  • 您可能应该将答案放在答案块中,然后接受答案。这让以后学会以这种方式使用网站的访问者更容易。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多