データを送信する前にC++でデータを暗号化するためにJavaプログラムによってRSA公開鍵を生成しましたが、この鍵を使用してMicrosoft暗号化APIを使用してデータを暗号化すると、この鍵は受け入れられません。
誰かがこれについて何か考えを持っていますか?
データを送信する前にC++でデータを暗号化するためにJavaプログラムによってRSA公開鍵を生成しましたが、この鍵を使用してMicrosoft暗号化APIを使用してデータを暗号化すると、この鍵は受け入れられません。
誰かがこれについて何か考えを持っていますか?
Microsoft コードには、使用できる RSA キーに関していくつかの固有の制限があります。公開キーの長さ (モジュラス ビットの長さ) が 16 の倍数である必要があり、公開指数は 32 ビットの符号なし整数に収まる必要があります。
ただし、ほとんどの RSA キーはこれらの制約に適合しており、通常疑われるのはエンコード/デコードの問題です。Java はどこでもビッグエンディアンを使用する傾向があります。その理由は次のとおりです。
一方、Microsoft の CryptoAPI はリトルエンディアンを必要とします。公開モジュラスを間違った順序で使用した可能性があります。
私の経験では、RSA キーのシリアル化は Java と MS で異なります。
しかし、私がしたことは、Bouncy Castle API を使用してこれを行うことでした。これは、ライブラリの Java および .NET バージョンがあるためです。
その他のオプションについては、次の質問を参照してください: RSA: How to generate private key in java and use it in C#?