4

.NET で PKCS#12 ファイルをデコードする方法を探しています。プログラムで以下にアクセスできるように、秘密鍵と証明書を抽出する必要があります。

  • 係数
  • publicExponent
  • プライベート指数
  • 素数1
  • プライム2
  • 指数1
  • 指数2
  • 係数

PKCS#11 を使用して秘密鍵を作成し、USB トークンで証明書を発行できるようにするには、この情報が必要です。

OpenSSLを使用してこのデータを出力する Web サイトを見つけました。OpenSSL.NETを見つけたときはかなり興奮しましたが、PKCS#12 ファイルを分割する機能はまだ実装されていません。誰かが代替案を知っているかどうか疑問に思っていました。

ありがとう

ローハン

4

4 に答える 4

4

乾杯マヌエル、

Bouncy Castle API をダウンロードしましたが、必要なものがすぐに見つかりました。ソース コードには、単体テストの広範なリストが含まれています。

static void Main(string[] args)
{
    char[] password = new char[] {'p','a','s','s','w','o','r','d'};

    using(StreamReader reader = new StreamReader(@"Test.pfx"))
    {
        Pkcs12Store store = new Pkcs12Store(reader.BaseStream,password);
        foreach (string n in store.Aliases)
        {
            if(store.IsKeyEntry(n))
            {
                AsymmetricKeyEntry key = store.GetKey(n);

                if(key.Key.IsPrivate)
                {
                    RsaPrivateCrtKeyParameters parameters = key.Key as RsaPrivateCrtKeyParameters;
                    Console.WriteLine(parameters.PublicExponent);
                }                       
            }
        }
    }
}
于 2009-02-17T03:19:37.230 に答える
2

私は最近のプロジェクトで、その Java 移植版で弾む城の API を拡張的に使用しましたが、驚くほど完璧に動作します。

彼らの C# もそれほど変わらないと思いますが、ターゲットに合わせて非常にうまく機能します。

http://www.bouncycastle.org/

于 2009-02-17T02:25:48.187 に答える
0

知る限り、win32暗号ライブラリにピンボークする必要があります。このMSDNの記事を参照してください:http://msdn.microsoft.com/en-us/library/ms867088.aspx

于 2009-02-17T02:09:07.180 に答える
0

pInvoke を介して OpenSSL を直接使用できるはずです。OpenSSL.NET プロジェクトが機能するようになったら、そのプロジェクトに貢献できるかもしれません。

win32 暗号化プロバイダーは優れた代替手段ですが、解析および生成できる形式に関して柔軟性に欠ける場合があります。

于 2009-02-17T02:22:39.003 に答える