[英]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.