【问题标题】:Why does KeyValue take a public key?为什么 KeyValue 需要公钥?
【发布时间】:2013-02-06 18:30:38
【问题描述】:

我正在尝试使用 Java 对 XML 文档进行签名,并且我正在关注此 tutorial。我试图使用我的私钥签署文档,但是当我查看 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); 

我认为私钥的全部意义在于人们会信任你?为什么你需要一个公钥来处理这里的任何事情?有人可以为我解释一下这里的细节吗?

【问题讨论】:

    标签: java key digital-signature keystore xml-signature


    【解决方案1】:

    一般来说,当有人想要验证/解密使用私钥加密的东西时,必须知道相关的公钥(这是公钥/非对称密码学的重点)。

    XMLSignature 上下文中,想要使用 XMLSignature 验证文档的人需要知道使用什么公钥;因此,为方便起见,可以将公钥包含在 XMLSignature 结构中。

    成功验证 XMLSignature 意味着人们可以相信签名的数据自签名创建以来未被修改。如果已知公钥与特定方相关联,则可以信任创建签名的一方。

    如教程中所述,您仍然必须使用以下命令“签署”签名:

    signature.sign(dsc); 
    

    【讨论】:

      猜你喜欢
      • 2020-07-06
      • 2020-03-13
      • 2015-04-13
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 2011-10-06
      相关资源
      最近更新 更多