2011-07-11 17 views
1

RSA暗号化/復号化が必要な機能があります。提供された.pemファイルには、RSAのペアキーが含まれています。 How to read a PEM RSA private key from .NETと同じOrg.BouncyCastleを使用します。またはhttp://www.jensign.com/opensslkey/opensslkey.csのメソッドを使用します。私が受け取ったのは、パラメータDQの「不良データ」が63バイト(64バイトと異なる)です。 (.pemファイルは正常だったと言われています)ここに問題はありますか?PEMファイルを読み込み、DQパラメータで63バイトを取得

+0

「不良データ」を受け取ったということを意味しますか?エラーメッセージが表示されたら、完全なエラーメッセージをコピーして回答に貼り付けます。 –

+0

RSAにパラメータ(D、Q、P、DQ ...)をインポートすると、「不良データ」が発生します。 DQの長さのdiffirenceの原因。通常、64バイトの長さのDQが必要ですが、この場合は63バイトです。 – thongqn

答えて

2

すべてのRSAパラメータは単純に(巨大な)数値です。それらの大部分は同じサイズ(同じキーペアの長さ、たとえば1024)で同じサイズを持ちますが、これは必ずしもそうではありません。コード内でこれをカバーする必要があります。

なぜですか?いくつかの数字は少し小さくなり、他の数字よりも少ないビットに収まるためです。あなたのケースでは、数字は63バイトに収まるので、base64(PEM)はそのようにエンコードされています。

解決策は、読み込み中のデータを埋め込むことです。つまり、デコードする前に0x00バイトを追加することです。これは同じ数値(数学的賢さ)であり、RSAキーパラメータのすべての.NET検証に合格します。

p.s. Monoのソースコードを見て、これがどう処理されているか見ることができます。

関連する問題