2011-12-18 16 views
1

DLLの問題は見つかりましたが、ドキュメントを見つけるのに問題があります。OpenSSL.Netに関するドキュメントはどこにありますか

秘密のRSAキーを使用して文字列を復号化するにはC#を使用します。 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

は、それが助けた:)しかし、私はむしろ、IO機能を維持するために、それをリファクタリングするかどうグラッドhttp://openssl-net.sourceforge.net/ –

+1

を見てみましょう。実際には、テキストを復号化するたびにではなく、.pemファイルを一度だけ読み込む必要があります。 –

+0

もちろん、自分の秘密鍵を自分のクラスのプライベートな読み取り専用文字列にしてから、IO機能をコンストラクタに追加しました! – JMK

答えて

1

[] 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); 
     } 
    } 
}