私が見る限り、Microsoft の RSA CSP は常に同じビット長の疑似素数を生成します。鍵のサイズが 1024 の場合、P と Q の値は (?) それぞれ 512 ビットであることが保証されているようです。これが実際に当てはまるかどうか、誰かが確実に知っていますか?
私自身の RSA 実装と Microsoft の RSA 実装との間の相互運用性モジュールを構築しています。私の場合、P 値と Q 値の間に小さなランダムな分散を組み込んでいるので、1024 ビットのキーの場合、1 つの値が 506 ビットで、もう 1 つの値が 518 ビットになる可能性があります。純粋に実験的に、分散を 0 にロックすると (つまりP と Q の値はサイズが同じです) -- 正常に機能します。サイズ変数を作成するとすぐに、インポート プロセス中に Microsoft RSA オブジェクトが「Bad Data」で応答します。
Microsoft が等しいキー サイズを強制しているという確認を探しているので、誰か情報を持っている場合は投稿してください。
なぜ私が独自の RSA プロバイダーを実装しなければならなかったのかを誰かが尋ねる前に、CryptoAPI はマルチスレッド環境では適切に動作しません。CryptoServiceProvider 呼び出しでマシン キーストアをロックします。これは、複数のスレッドからアクセスした場合の「ファイルが見つかりません」(やや不可解な) エラーを意味します
気になる方はこちらをご覧ください: http://blogs.msdn.com/b/alejacma/archive/2007/12/03/rsacryptoserviceprovider-fails-when-used-with-asp-net.aspx