http://java.sun.com/j2se/1.4/ja/docs/ja/guide/se …
を読んで、ある文章への署名の方法はわかりました。
だた、検証の方法がわからないんです。
例えば、あるプログラムで署名されたファイルを
違うプログラムで検証するにはどうしたらいいのでしょうか?
秘密鍵の生成などはわかったのですが、
どのようにして、署名をした人でない人が
公開鍵を受け取って検証するのでしょうか?
この公開鍵の受け取り方がわかりません。
どうかよろしくお願いします。
No.1ベストアンサー
- 回答日時:
■署名側アプリケーション
------------------------
KeyPair pair;
(1)キーペア・ジェネレータ作成
(2)キーペアジェネレータ初期化
(3)キーペア(公開鍵と秘密鍵のペア)生成
(http://java.sun.com/j2se/1.4/ja/docs/ja/guide/se …
(3)Signatureオブジェクト作成
(4)(秘密鍵で)Signatureオブジェクト初期化
(5)Signatureオブジェクトに「署名対象データ」(※署名対象のファイルデータなど)を認識させる。(下記dsaはSignatureオブジェクト)
FileInputStream fis = new FileInputStream("target.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] data = new byte[1024];
int len;
while (bis.available() != 0) {
len = bis.read(data);
dsa.update(data, 0, len);//Signatureオブジェクトに認識!
};
bis.close();
(6)「署名対象データ」の署名を得る。
byte[] sig = dsa.sign();
(http://java.sun.com/j2se/1.4/ja/docs/ja/guide/se …
(7)ファイルに「署名(バイト配列)」を書き出す。
(8)ファイルに「公開鍵(バイト配列)」を書き出す。(※下記pubはPublicKeyオブジェクト)
byte[] key = pub.getEncoded();//バイト配列にエンコード
・
・
(以下省略)
・
------------------------
あとは、
「署名対象データ(ファイル)」「署名データを書き出したファイル」「公開鍵データを書き出したファイル」を検証側に送って、
それらをつかって検証してもらう。(※検証の流れは上記URLにも書いてある)
※この検証の際、「公開鍵のバイト配列」からPublicKeyオブジェクトをどうやって得るかがポイントかも。その方法は
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/se …
ここの「Alice は、次のコードを実行して署名を検証できます。 このコードは、符号化された状態から DSA 公開鍵のインスタンスを生成…」という箇所。
No.3
- 回答日時:
テストしたいだけなら、好きなように受け取ればよい
と思いますが。
実用的な受け取り方としては、公開鍵サーバの利用が
あります。「公開鍵サーバ」で検索すれば情報が沢山
ヒットします。
No.2
- 回答日時:
No.1です。
ごめん。思いっきり「いらんこと」書いてしまった…。
3分の2は、必要なかったね…。
書き直し。
--------------------
・署名のバイト配列を書き込んだファイル
・公開鍵のバイト配列を書き込んだファイル
・署名対象のファイル
の3つを、何らかの方法で(※郵送とか?)
相手に送る。(一緒に送らないで別々に送ったほうがいいのかな? このへんはよくわからない)
相手は、送られてきたファイルを元に検証する。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF 間違ってPDFに不可視署名をしてしまったのですが、削除の方法を教えてください 1 2022/10/06 12:07
- セキュリティホール・脆弱性 電子署名について教えてください 電子署名は公開鍵暗号方式ですが公開鍵で最初に暗号化してから秘密鍵で相 3 2023/05/03 14:50
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで =EMBED("Acrobat Docu...
-
パワーポイントのVBAでテキスト...
-
withを入れ子にして使う方法
-
VBAのWindowオブジェクトとWork...
-
距離変換画像について
-
VBA 下記ソースについて質問で...
-
オブジェクト指向の間違いと改...
-
Google Apps Scriptの時刻の計算
-
Unity,C#、複数の子オブジェク...
-
クラスのインスタンスの生成
-
Rangeオブジェクトに格納できない
-
オブジェクト名をforループ内で...
-
Visual C++で"オートメーション...
-
インデザインのテキスト回り込み
-
bmp画像をjpegやpng画像に圧縮...
-
JAVAからHTMLへ値を返す方法
-
.getElementById()のエラーにつ...
-
VBからBATファイルを起動して戻...
-
オブジェクトを枠線に合わせる...
-
コンボボックスを連動させる仕...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
vb.net オブジェクト指向につい...
-
COMコンポーネントって何?
-
オブジェクトレベルとメタレベル
-
ビジュアルC++でボタンの有...
-
時間帯判定をする。
-
LISTBOXの内容が更新されま...
-
VBA 同じ名前のオブジェクトを...
-
オブジェクト名をforループ内で...
-
Object型からDouble型へのキャスト
-
ADO オブジェクトの渡し方
-
bmp画像をjpegやpng画像に圧縮...
-
Vbで通常使用するプリンターを...
-
戻り値がクラスオブジェクト
-
VBAでvlookup関数から、別シー...
おすすめ情報