0

Java を使用して XML ドキュメントに署名しようとしています。このチュートリアルに従っています。秘密鍵を使用してドキュメントに署名しようとしましたが、API を見ると、 KeyValueはパラメーターとして PublicKey のみを受け取ると表示されています。また、チュートリアルでは、秘密鍵で DOMSignContext に署名してから、公開鍵で XMLSignature に署名する必要があります。

DOMSignContext dsc = new DOMSignContext(kp.getPrivate(), doc.getDocumentElement()); 
KeyValue kv = kif.newKeyValue(kp.getPublic());
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(kv)); 
XMLSignature signature = fac.newXMLSignature(si, ki); 

秘密鍵の要点は、人々があなたを信頼するためだと思いましたか? ここで公開鍵が必要なのはなぜですか?誰かがここで詳細を説明してくれませんか?

4

1 に答える 1

1

一般に、誰かが秘密鍵で暗号化されたものを検証/復号化したい場合、関連する公開鍵を知っている必要があります (これが公開鍵/非対称暗号化の要点です)。

このXMLSignatureコンテキストでは、XMLSignature を使用してドキュメントを検証したい人は、使用する公開鍵を知る必要があります。したがって、便宜上、公開鍵を XMLSignature 構造に含めることができます。

XMLSignature の検証に成功したということは、署名が作成されてから署名されたデータが変更されていないことを信頼できることを意味します。公開鍵が特定の関係者に関連付けられていることがわかっている場合は、その関係者が署名を作成したことを信頼できます。

チュートリアルで述べたように、署名を次のように「署名」する必要があります。

signature.sign(dsc); 
于 2013-02-06T19:33:46.910 に答える