アプリ版:「スタンプのみでお礼する」機能のリリースについて

http://java.sun.com/j2se/1.4/ja/docs/ja/guide/se …
を読んで、ある文章への署名の方法はわかりました。

だた、検証の方法がわからないんです。
例えば、あるプログラムで署名されたファイルを
違うプログラムで検証するにはどうしたらいいのでしょうか?

秘密鍵の生成などはわかったのですが、
どのようにして、署名をした人でない人が
公開鍵を受け取って検証するのでしょうか?

この公開鍵の受け取り方がわかりません。
どうかよろしくお願いします。

A 回答 (3件)

■署名側アプリケーション


------------------------
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 公開鍵のインスタンスを生成…」という箇所。
    • good
    • 0

テストしたいだけなら、好きなように受け取ればよい


と思いますが。

実用的な受け取り方としては、公開鍵サーバの利用が
あります。「公開鍵サーバ」で検索すれば情報が沢山
ヒットします。
    • good
    • 0

No.1です。



ごめん。思いっきり「いらんこと」書いてしまった…。
3分の2は、必要なかったね…。
書き直し。
--------------------
・署名のバイト配列を書き込んだファイル
・公開鍵のバイト配列を書き込んだファイル
・署名対象のファイル
の3つを、何らかの方法で(※郵送とか?)
相手に送る。(一緒に送らないで別々に送ったほうがいいのかな? このへんはよくわからない)

相手は、送られてきたファイルを元に検証する。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!