0

データを送信する前にC++でデータを暗号化するためにJavaプログラムによってRSA公開鍵を生成しましたが、この鍵を使用してMicrosoft暗号化APIを使用してデータを暗号化すると、この鍵は受け入れられません。

誰かがこれについて何か考えを持っていますか?

4

2 に答える 2

1

Microsoft コードには、使用できる RSA キーに関していくつかの固有の制限があります。公開キーの長さ (モジュラス ビットの長さ) が 16 の倍数である必要があり、公開指数は 32 ビットの符号なし整数に収まる必要があります。

ただし、ほとんどの RSA キーはこれらの制約に適合しており、通常疑われるのはエンコード/デコードの問題です。Java はどこでもビッグエンディアンを使用する傾向があります。その理由は次のとおりです。

  • これは、ASN.1 ベースのエンコード規則によって義務付けられていることです。
  • Java は、長い間ビッグエンディアンのハードウェア (68020、Sparc) を扱ってきた Sun のものです。

一方、Microsoft の CryptoAPI はリトルエンディアンを必要とします。公開モジュラスを間違った順序で使用した可能性があります。

于 2010-01-27T14:07:14.240 に答える
0

私の経験では、RSA キーのシリアル化は Java と MS で異なります。

しかし、私がしたことは、Bouncy Castle API を使用してこれを行うことでした。これは、ライブラリの Java および .NET バージョンがあるためです。

その他のオプションについては、次の質問を参照してください: RSA: How to generate private key in java and use it in C#?

于 2010-08-02T11:29:55.430 に答える