签名验证失败

发布于 2024-11-05 04:10:05 字数 558 浏览 8 评论 0原文

您好,我无法验证从服务器收到的响应的签名。我正在使用以下方法来验证它。

  using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes("D:\\Response.xml")))
  {
    XmlDocument responseDocument = new XmlDocument();
    responseDocument.PreserveWhitespace = true;
    responseDocument.Load(ms);

    SignedXml sxml = new SignedXml(responseDocument);
    XmlNodeList newNodeList = newDoc.GetElementsByTagName("Signature");
    sxml.LoadXml((XmlElement)newNodeList[0]);

    sxml.CheckSignature();        

  }

任何人都可以建议可能出现的问题吗?以及如何解决呢? 代码在c#.net中

Hi I am not able to verify signature for the response that I receive from server. I am using the following method to verify it.

  using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes("D:\\Response.xml")))
  {
    XmlDocument responseDocument = new XmlDocument();
    responseDocument.PreserveWhitespace = true;
    responseDocument.Load(ms);

    SignedXml sxml = new SignedXml(responseDocument);
    XmlNodeList newNodeList = newDoc.GetElementsByTagName("Signature");
    sxml.LoadXml((XmlElement)newNodeList[0]);

    sxml.CheckSignature();        

  }

Can anyone suggest what can be possible issues? And how to resolve it?
Code is in c#.net

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暮光沉寂 2024-11-12 04:10:05

你的代码似乎是错误的。您的代码会遍历所有签名标签(很好)并尝试在每个签名标签内查找签名标签(奇怪?!)

请尝试使用以下代码:

using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes("D:\\Response.xml")))
  {
    XmlDocument responseDocument = new XmlDocument();
    responseDocument.PreserveWhitespace = true;
    responseDocument.Load(ms);
    SignedXml sx = new SignedXml((XmlElement)responseDocument.GetElementsByTagName("Response")[0]);
    XmlNodeList nodeList = responseDocument.GetElementsByTagName("Signature");
    foreach (XmlElement element in nodeList)
    {
        // Load the signature node.
        sx.LoadXml(element);
        sx.CheckSignature();
    }
  }

Your code seems to be wrong. Your code iterates through all Signature tags (fine) and tries to look for a signature tag inside each signature tag (strange?!)

Try this code instead:

using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes("D:\\Response.xml")))
  {
    XmlDocument responseDocument = new XmlDocument();
    responseDocument.PreserveWhitespace = true;
    responseDocument.Load(ms);
    SignedXml sx = new SignedXml((XmlElement)responseDocument.GetElementsByTagName("Response")[0]);
    XmlNodeList nodeList = responseDocument.GetElementsByTagName("Signature");
    foreach (XmlElement element in nodeList)
    {
        // Load the signature node.
        sx.LoadXml(element);
        sx.CheckSignature();
    }
  }
缘字诀 2024-11-12 04:10:05

问题来自签名生成过程。现在已经解决了。
以上方法可以正确验证签名。

Issue was from signature generation process. It is resolved now.
Above method is correct to verify the signature.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文