ASP.Net相当于openssl_private_decrypt和openssl_pkey_get_private

时间:2014-03-31 17:20:25

标签: c# php asp.net encryption openssl

我想在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);

1 个答案:

答案 0 :(得分:2)

我明白了。

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

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

请参阅我的更新以获得最终答案。