繁体   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