4

ユーザーから秘密鍵を取得し、それを base64 として別のアプリケーションに送信する必要があるアプリケーションを作成します。ユーザーが秘密鍵を使用して X509Certificate2 を挿入できるようにしたいと考えています。今、私の大きな問題は、秘密鍵を AsimetricAlgorithm オブジェクトからすべての秘密鍵を含むベイト配列に変換するにはどうすればよいですか? openSSl を使用できることがわかりました - すべての証明書を pem ファイルに変換してから RSA ファイルに変換し、秘密鍵を読み取りますが、使用したくない理由: ファイル、3P ライブラリでは使用したくないので、そうではありません。安全など..それを行う別の方法を知っている人はいますか?

前もって感謝します!

4

1 に答える 1

3

あなたの意志のプロパティから取得したAsymmetricAlgorithmオブジェクトは、実際には、などのから派生したさまざまなタイプの 1 つのインスタンスです。PrivateKeyX509Certificate2AsymmetricAlgorithmRSACryptoServiceProviderDSACryptoServiceProvider

扱っている秘密鍵のタイプを判別し、適切にキャストする必要があります。ExportCspBlob(true)キャストしたら、呼び出して秘密鍵データを取得できるはずです。

例 (RSA キーを想定):

public string GetRSAPrivateKeyBase64(X509Certificate2 certificate)
{
    var privateKey = certificate.PrivateKey as RSACryptoServiceProvider;
    if (privateKey == null) throw new Exception("Not an RSA private key");
    // Export the CSP blob, including private key parameters 
    var cspBlob = privateKey.ExportCspBlob(true);
    return Convert.ToBase64String(cspBlob);
}
于 2011-10-24T15:16:23.500 に答える