2014-03-31 50 views
1

我想解密ASP.Net中的文本。ASP.Net相當於openssl_private_decrypt和openssl_pkey_get_private

工作代碼解密在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#的方法呢?

UPDATE:

我創建使用一對夫婦的答案的方法。

使用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); 
+0

我認爲我用研究回答了我自己的問題。測試後不久會發布我的答案,以幫助其他人。 –

+0

似乎已在解決http://stackoverflow.com/a/251757/3325704 – jariq

+0

該解決方案與另一個解決方案結合起來,大部分方式,只是我得到一個錯誤,看到更新。 –

回答

2

我想通了。

答案是來自不同地方的代碼的集合。

評論中的鏈接是其中的一部分。我之前看過同一篇文章,但沒有其他代碼,我沒有看到相關性。

查看我的最新答案。

+1

您應該在回答塊中填入答案,然後接受答案。這使得以這種方式學習使用該網站的未來訪問者更容易。 – jww

相關問題