簡體   English   中英

KeyValue為什么要使用公共密鑰?

[英]Why does KeyValue take a public key?

我正在嘗試使用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); 

我認為私鑰的全部目的是讓人們信任您? 您為什么在這里需要公用密鑰? 有人可以在這里為我解釋一些細節嗎?

通常,當某人想要驗證/解密使用私鑰加密的內容時,必須知道關聯的公鑰(這是公鑰/非對稱密碼學的重點)。

XMLSignature上下文中,想要使用XMLSignature驗證文檔的人將需要知道要使用哪個公鑰; 因此,為方便起見,公共密鑰可以包含在XMLSignature結構中。

XMLSignature的成功驗證意味着人們可以相信,自創建簽名以來,已簽名的數據尚未被修改。 如果已知公鑰與特定的一方相關聯,則可以信任該一方創建了簽名。

如本教程所述,您仍然必須使用以下方法“簽名”簽名:

signature.sign(dsc); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM