2011-12-18 142 views
1

我發現DLL沒問題,但是我在查找文檔時遇到了問題。我在哪裏可以找到有關OpenSSL.Net的文檔

我想使用C#使用私有RSA密鑰解密一串文本。關於OpenSSL.Net的文檔將非常棒,關於如何做到這一點的信息將會非常棒!

編輯:

本身是Base64編碼的字符串,和我的私人密鑰存儲在一個* .PEM文件。我的最後一個方法是下面,基於LOSTCODER的回答是:

public string Decrypt(string textToDecrypt) 
{ 
    byte[] payLoad = Convert.FromBase64String(textToDecrypt); 

    StreamReader sr = new StreamReader("pemfilelocation.pem"); 
    string privateKey = sr.ReadToEnd(); 

    using (var key = CryptoKey.FromPrivateKey(privateKey, "myprivatekey")) 
    { 
     using (var rsa = key.GetRSA()) 
     { 
      payLoad = rsa.PrivateDecrypt(payLoad, RSA.Padding.PKCS1); 
     } 
    } 

    return Encoding.UTF8.GetString(payLoad); 
} 

三江源

+0

看看http://openssl-net.sourceforge.net/ – 2011-12-18 15:16:15

+1

高興,如果它幫助:)但是我寧願重構它保持IO功能了。事實上,你應該只讀一次.pem文件,而不是每次解密一些文本。 – 2012-03-14 11:38:55

+0

當然,我在我的類中創建了一個私有隻讀字符串,然後將IO功能添加到了我的構造函數中! – JMK 2012-03-14 12:08:21

回答

1

使用下列程序解密一個byte []使用RSA私鑰。如果您想傳遞加密的「文本字符串」,請使用System.Text.Encoding.ASCII.GetBytes()將其轉換爲字節[](文本被假定爲ASCII編碼)。

private static byte[] Decrypt(byte[] payLoad, string privateKey) 
{ 
    using (var key = OpenSSL.Crypto.CryptoKey.FromPrivateKey(privateKey, null)) 
    { 
     using (var rsa = key.GetRSA()) 
     { 
      return rsa.PrivateDecrypt(payLoad, OpenSSL.Crypto.RSA.Padding.PKCS1); 
     } 
    } 
} 
相關問題