- PR -

javaとC++でハイブリッド暗号の実装について

投稿者投稿内容
るな
常連さん
会議室デビュー日: 2006/03/09
投稿数: 21
投稿日時: 2006-06-30 20:18
お世話になっております。

現状サーバ側(C++)の公開鍵符号化に使用しているWinAPIのCryptExportKey()の
エンコードフォーマットが分からなかったのと、
後々Linux対応も視野に入れると言う理由でOpenSSL(0.9.8b)のライブラリを使用してみました。
【C++ ⇔ C++】は動作したのですが、結果は変わらず
javaで公開鍵を復元しようとすると「Could not decode public key from BER」が出ます。

--- C++ ----
// 宣言
RSA* pRsa = NULL;
// 鍵作成
pRsa= RSA_generate_key(512, 65537, NULL, NULL);
// 公開鍵をRSA to メモリに書き出し
unsigned char *buf_pub = NULL;
// サイズ割り出し
int nLen_pub = i2d_RSAPublicKey(pRsa, NULL);
buf_pub = next_pub = (unsigned char*)malloc(nLen_pub);
// 符号化
i2d_RSAPublicKey(pRsa, &buf_pub);

アドバイス頂いた通り、符号化フォーマットを調べました...
OpenSSLの上記符号化はDER形式のようでjavaで出てるエラーは「BERじゃないよ?」なのです。
どちらもエンコードされたものは同じとの事の様なのに期待通りに行きません。

参考にさせて頂いたサイト
http://www.geocities.co.jp/SiliconValley-SanJose/3377/
http://nienie.com/~masapico/crypt1.html


理解が足りてないかもしれませんがご教授の程お願いします。

スキルアップ/キャリアアップ(JOB@IT)