WebService で受信した Base64 の文字列から RSA 秘密鍵をインポートする C#/.Net 4.0 アプリケーションがあります。
このアプリケーションは、1024 ビットの RSA キーに対しては完全に機能しますが、特別な種類の RSA 秘密キー (キーの約 1%) では機能しません。
バイト長は次のとおりです。
ワーキングキー:
- 係数 => 128 バイト
- 指数 => 3 バイト
- D => 128 バイト
- P => 64 バイト
- Q => 64 バイト
- DP => 64 バイト
- DQ => 64 バイト
- IQ => 64 バイト
機能していないキー:
- 係数 => 128 バイト
- 指数 => 3 バイト
- D => 127 バイト
- P => 64 バイト
- Q => 64 バイト
- DP => 64 バイト
- DQ => 64 バイト
- IQ => 64 バイト
違いは D の長さにあります (128 は動作、127 は動作していません)。非稼働鍵は、稼働鍵より 1 バイト短くなっています。
パラメータは設定されていますが、RSA.ImportParameters(rsaParams) を実行すると、「Bad Data」メッセージとともに CryptographicException がスローされます。
この問題を解決するには、何を含める必要がありますか?