我正在开展一个项目,我需要验证xml
是否经过数字签名。
我真的很难尝试验证XML
以获取关键值
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI=**Some URI Value**>
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>**Some Digest Value**</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>**Some Signature Value**</SignatureValue>
<KeyInfo xmlns:type="http://www.w3.org/2000/09/xmldsig#RSAKeyValue">
<RSAKeyValue><Modulus>**Some RSA Key Value**</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyInfo >
</Signature>
我无法找出如何获取
的值Reference URI
Digest Value
Signature Value
RSA Modulus Value
任何人都能告诉我如何获得以上所有的价值吗? 在XML验证中使用这些组合的逻辑是什么?
我正在使用C#
来检查验证。
你可以在之前的问题中检查c#的代码
答案 0 :(得分:0)
如果您只想检查值是否存在,只需使用一些XML操作类,如XDocument。
如果您想验证签名,您需要了解这一点:
因此,如果要检查签名是否有效,则需要使用公钥来标记SignatureValue,然后将其与DigestValue进行比较。如果两者相等,那么你的文件就可以了,如果没有,可能会发生两件事。或者在此过程中修改了文档,或者公钥与加密文档的私钥不对应。