Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中xml文档的DigestValue_Php_Xml_Sha256 - Fatal编程技术网

php中xml文档的DigestValue

php中xml文档的DigestValue,php,xml,sha256,Php,Xml,Sha256,有谁能帮助我如何在XML文档中实现正确的DigestValue吗?我有一些来自创建者的XML示例,但不知何故,我无法在PHP中生成相同的SHA256哈希 文档中说应该使用SHA256算法对数据进行散列。据我所知,我需要 规范化xml(c14n) 从中创建SHA256哈希 base64编码它 这个例子的散列结果显然应该是 TWpSLQpOXSUe8k6Q8lAd7DyMhWkTIcbHNifrPnWDG/M= 如何通过下面的代码在php中实现它 我试过这个: $xml='<soap:Body

有谁能帮助我如何在XML文档中实现正确的DigestValue吗?我有一些来自创建者的XML示例,但不知何故,我无法在PHP中生成相同的SHA256哈希

文档中说应该使用SHA256算法对数据进行散列。据我所知,我需要

  • 规范化xml(c14n)
  • 从中创建SHA256哈希
  • base64编码它
  • 这个例子的散列结果显然应该是 TWpSLQpOXSUe8k6Q8lAd7DyMhWkTIcbHNifrPnWDG/M=

    如何通过下面的代码在php中实现它

    我试过这个:

    $xml='<soap:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-AB79979F3364F5119A14761286403964"><Trzba xmlns="http://fs.mfcr.cz/eet/schema/v3"><Hlavicka dat_odesl="2016-09-19T19:06:37+02:00" prvni_zaslani="false" uuid_zpravy="ab1bc7a0-5ab0-4d61-a170-2982f2d83784"/><Data celk_trzba="34113.00" cerp_zuct="679.00" cest_sluz="5460.00" dan1="-172.39" dan2="-530.73" dan3="975.65" dat_trzby="2016-08-05T00:30:12+02:00" dic_popl="CZ1212121218" id_pokl="/5546/RO24" id_provoz="273" porad_cis="0/6460/ZQ42" pouzit_zboz1="784.00" pouzit_zboz2="967.00" pouzit_zboz3="189.00" rezim="0" urceno_cerp_zuct="324.00" zakl_dan1="-820.92" zakl_dan2="-3538.20" zakl_dan3="9756.46" zakl_nepodl_dph="3036.00"/><KontrolniKody><pkp cipher="RSA2048" digest="SHA256" encoding="base64">JvCv0lXfT74zuviJaHeO91guUfum1MKhq0NNPxW0YlBGvIIt+I4QxEC3QP6BRwEkIS14n2WN+9oQ8nhQPYwZX7L4W9Ie7CYv1ojcl/YiF4560EdB3IpRNRj3UjQlwSZ5ucSM9vWqp0UTbhJDSUk5/WjC/CEiSYv7OQIqa0NJ0f0+ldzGveLRSF34eu2iqAhs/yfDnENlnMDPVB5ko/zQO0vcC93k5DEWEoytTIAsKd6jKSO7eama8Qe+d0wq9vBzudkfLgCe2C1iERJuyHknhjo9KOx10h5wk99QqVGX8tthpAmryDcX2N0ZGkzJHuzzebnYsxXFYI2tKOJLiLLoLQ==</pkp><bkp digest="SHA1" encoding="base16">3F9119C1-FBF34535-D30B60F8-9859E4A6-C8C8AAFA</bkp></KontrolniKody></Trzba></soap:Body>';
    $doc = new DOMDocument('1.0','UTF-8');
    $doc->loadXML($xml);
    echo base64_encode(hash('SHA256',$doc->C14N(true),true));
    
    (代码)xml(代码)是一个xml(代码)的意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思是一个意思意思意思意思意思意思意思意思意思意思意思意思意思是一个意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思意思是“Jhuzzebnysxxfyi2tkojliLLoLQ==3F9119C1-FBF34535-D30B60F8-9859E4A6-C8C8AAFA'; $doc=新的DOMDocument('1.0','UTF-8'); $doc->loadXML($xml); echo base64_编码(散列('SHA256',$doc->C14N(true),true)); 但这会给我返回另一个散列值:-(可能我只是从XML源中选取了错误的部分。从文本的哪个部分/它们如何计算散列以及如何在php中获得相同的结果有什么想法吗?整个工作示例(取自[)如下:

    Miiemcca4cgawibagiedhoxjzanbgkqhkig9w0baqsfadb3mriweakcq1oxzbbbbgnvbaomossznrw6egumvwdwjsawthiokakybhzw5lcsohbg7drsbmaw5hbssnbsotimwzzwrpdgvsc3w60xhabgnvbte0vfbqaxifbxxlm91bmqwhchchcnmzwwwwwwwwwwzwwwwwwwwwwwwwwwwwwwwwwzwwzwwwwwwzwwwwwzwwwzwwzwwwzwwzwwzwzwzwwwwzwzwzwzwwzwzwzwzwzwzwzwzwwzwzww研究者们提出了一种新的研究方法——一种新的研究方法——一种新的研究方法——一种新的研究方法——Q Q Q/Jp0/TJJJ8-8 8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-MQ Q Q Q Q Q-8-8-8-8-8-8-8-Q Q Q Q Q Q-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-Q Q Q Q Q Q Q Q-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-8-Q Q Q Q Q Q Q Q Q Q Q-8-8-8-8-8-8-8-8-8-8-8-8-8-8-WNAWBRTSVHSADDO8VFM2.C+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+G2+2+G2+2+G2+2+G2+2+2 2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 102.这两部分内容是一篇文章,一部分是一篇文章,一部分是一篇文章,一部分是一篇文章,一部分是一篇文章,一部分是一篇文章,一部分是一篇文章,一部分是一部分是一篇文章,一部分是一部分是一部分是一部分是一部分是一部分是一部分是一部分,一部分是一部分是一部分是一部分是一部分,一部分是一部分是一部分是一部分是一部分是一部分,一部分是一部分是一部分是一部分是一部分是一部分,一部分是一部分是一部分是一部分是一部分是一部分是一部分,一部分是一部分是一部分是一部分是一部分是一部分是一部分,一部分是一部分是一部分是一部分是一部分是一部分是一部分是一部分是一部分是一部分,一部分是一部分是一部分是一部分是一部分是一部分是一部分是一部分是一部分是一部分是一XO80CNP7U1ZPKVNV7WZWH02 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 MIOPSACEEZJWF5TCME/uU1tzXs+LsLS8WX2.中国的一个军事研究领域的一个研究领域的一个研究领域的一个研究领域的一个研究领域的一个研究领域的一个3个研究领域的一个3个研究领域的一个研究领域的一个研究领域的一个研究领域的一个研究领域的一个研究方向是,一个研究领域的一个研究领域的一个研究领域,一个研究领域的一个研究领域的一个研究方向是一个新的一个新的研究。一个研究领域的一个研究领域的一个新的一个研究方向是,一个新的一个新的研究方向是一个新的一个新的研究方向的一个新的研究领域的一个新的一个新的研究领域,一个新的研究领域,一个新的一个新的研究方向是一个新的研究方向,一个新的一个新的研究领域,一个新的一个新的研究方向,一个新的一个新的研究方向是一个新的研究方向的技术che7ibliobck1uHh8qqHA66Isnhb6hqBOOdlt2aWO/0JCZLFEQR0AXPPF1MOHMNP3HICAXZH0DNMdJU5OMMRQ+91PL5T9KKKKR7BFGHQAOWJ0KMXY/mZumtRfGil2/xf7I5pdVeYXPgDO/TOJZM6J95N68FPDOXTDRTZKYMQDJPG3KWPLNQFRMKKKKKKKKKKKKKQRKBLTOJWG1LDUTTMPZQ4C0NGCxJDZGLXFOLGPA==9356D566-A38838-FB44790-D29592
    
    XML中的哪个路径遵循此
    $doc->C14N
    ?具体来说,您需要将XML的哪个部分传递到
    哈希()中
    ?soap:Body,至少他们这么说。我已经提取了上面的XML源代码的这一部分,但它给了我除了上面的示例之外的其他哈希结果。
    soap:Body
    是根。您需要提取文档中的特定节点是什么?问题是,我有一个方法供您使用,它返回哈希值,但与特定节点文本不同s、 事实上,在你的链接中,
    ds:DigestValue
    与你需要的哈希值完全匹配,没有PHP函数。感谢你的回复。请原谅,我不是XML专家,所以我不确定我是否能清楚地表达自己。这整件事都应该用来发送商户账单的值。重要的部分是元素,它包含了对于事务,包括VAT valuet等,以及所有使用openssl签名的事务(我已经完成了)。但是,当我更改示例中的任何值时,远程服务器返回soap签名错误。这应该是对XML文档进行哈希处理的标准方法。手册中说:“只有一个元素soap:body包含在soap消息的签名中,包括根据有效XML模式(XSD)组装的电子账单(eet:Trzba)的XML结构。电子签名必须根据XML签名语法和处理(第二版)实现。”有以下要求:等等,包括soap摘要:body必须使用SHA256签名。“我认为这只是一件愚蠢的事情,因为我对XML签名过程缺乏了解。因此,从给出的示例中,我拼命地尝试生成正确的SHA256”哈希“签名。XML中的哪个路径遵循此
    $doc->C14N
    ?具体来说,您需要将XML的哪个部分传递到
    哈希()中?”
    ?soap:Body,至少他们这么说。我已经提取了上面的XML源代码的这一部分,但它给了我除了上面的示例之外的其他哈希结果。
    soap:Body
    是根。您需要提取文档中的特定节点是什么?问题是,我有一个方法供您使用,它返回哈希值,但与特定节点文本不同s、 事实上,在您的链接中,<代码
    <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-A79845F15C5549CA0514761283545351">MIIEmDCCA4CgAwIBAgIEdHOXJzANBgkqhkiG9w0BAQsFADB3MRIwEAYKCZImiZPyLGQBGRYCQ1oxQzBBBgNVBAoMOsSMZXNrw6EgUmVwdWJsaWthIOKAkyBHZW5lcsOhbG7DrSBmaW5hbsSNbsOtIMWZZWRpdGVsc3R2w60xHDAaBgNVBAMTE0VFVCBDQSAxIFBsYXlncm91bmQwHhcNMTYwOTMwMDkwMzU5WhcNMTkwOTMwMDkwMzU5WjBDMRIwEAYKCZImiZPyLGQBGRYCQ1oxEzARBgNVBAMTCkNaMDAwMDAwMTkxGDAWBgNVBA0TD3ByYXZuaWNrYSBvc29iYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnNUPW8rAlLi2KAwu12W1vqLj02mWIifq/Jp0/tUjf9B8RpkDAD3GOqDdVuHSfxej92WiEouDy7X8uXzIDdZu4pXA3t3KntxM8rAlu2U6SqtF3kTR+AJCdwfkM53U3z4/qoyKqdQ8lGuMxJKs7X5uIjcY/UDSXMK9OTmXRhndjYcX1oILr5F2ONf1Z0kWyl/S9wI0cl0gQ1F91mzqgnlH80u2inMmmBp42ndR4TGS1nvjer5D73bkLg07TdeqnUg609WwjUJN96OKZMsKXzBMzt09NbhQcABWnAWbRTSVhsAdDO8vfmWx2C+gXUlkIvtO+9fbj81GS1xdNoAkpARUcCAwEAAaOCAV4wggFaMAkGA1UdEwQCMAAwHQYDVR0OBBYEFL/0b0Iw6FY33UT8iJEy1V7nZVR6MB8GA1UdIwQYMBaAFHwwdqzM1ofR7Mkf4nAILONf3gwHMA4GA1UdDwEB/wQEAwIGwDBjBgNVHSAEXDBaMFgGCmCGSAFlAwIBMAEwSjBIBggrBgEFBQcCAjA8DDpUZW50byBjZXJ0aWZpa8OhdCBieWwgdnlkw6FuIHBvdXplIHBybyB0ZXN0b3ZhY8OtIMO6xI1lbHkuMIGXBgNVHR8EgY8wgYwwgYmggYaggYOGKWh0dHA6Ly9jcmwuY2ExLXBnLmVldC5jei9lZXRjYTFwZy9hbGwuY3JshipodHRwOi8vY3JsMi5jYTEtcGcuZWV0LmN6L2VldGNhMXBnL2FsbC5jcmyGKmh0dHA6Ly9jcmwzLmNhMS1wZy5lZXQuY3ovZWV0Y2ExcGcvYWxsLmNybDANBgkqhkiG9w0BAQsFAAOCAQEAvXdWsU+Ibd1VysKnjoy6RCYVcI9+oRUSSTvQQDJLFjwn5Sm6Hebhci8ERGwAzd2R6uqPdzl1KCjmHOitypZ66e+/e9wj3BaDqgBKRZYvxZykaVUdtQgG0819JZmiXTbGgOCKiUPIXO80cnP7U1ZPkVNV7WZwh0I2k/fg1VLTI5HA/x4BeD77wiEOExa7eqePJET0jpTVK3LxSW59LLIJROh4/kfKQbTvDL5Ypw8WagAMVCPvWnGJIcUru+ApLU4pZD9bdHSa1Ib4LpFhtWrkHYM/XqKbj2bNKKjTo5T3sU0Bf2QD3QzkmcjlNVG0V+qAgimwTdPueU/mtExw+7z1/A==</wsse:BinarySecurityToken><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SIG-A79845F15C5549CA0514761283545705"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="soap"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI="#id-A79845F15C5549CA0514761283545594"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList=""/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>M8/dBI/LLuwxP8ZoeRKVVpzIhQhyUDI0l6bglhNWKC0=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>DlFiF51sdtc0zeqgCsuSY6EU5emX7Hka6Ox3gviR4dpqyrwj6O8cm4oWkUTl+erINf9CpOG2y1z5y83+DubuGmiOPsACeEZjwF5TCme/uU1tzXs+LsLS8WXZvuMUejFOrUFEUKyzRvHJW5lskV/DhiMsTwJ/MEtGtjRVuWnAEcHxq/3ALsc3HfSi/qAqAiGlz3OpIKf3Hai6iiD37eJwHNd9QdJy4D32DJwY4Gw21ku7TO3FiLdtBT+Xdr3At8sWbbihFwErKrutT/FAVQKffUzCjHdEm9//W/shHufxYdnEh0m8cYp5Z5xK2bfnfhaKPB0rUZrrcw8T7LlvZKGogg==</ds:SignatureValue><ds:KeyInfo Id="KI-A79845F15C5549CA0514761283545482"><wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STR-A79845F15C5549CA0514761283545513"><wsse:Reference URI="#X509-A79845F15C5549CA0514761283545351" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></ds:KeyInfo></ds:Signature></wsse:Security></SOAP-ENV:Header><soap:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-A79845F15C5549CA0514761283545594"><Trzba xmlns="http://fs.mfcr.cz/eet/schema/v3"><Hlavicka dat_odesl="2016-08-19T19:06:37+02:00" prvni_zaslani="false" uuid_zpravy="2da635a5-d712-459d-9674-c12f335c39f7"/><Data celk_trzba="34113.00" cerp_zuct="679.00" cest_sluz="5460.00" dan1="-172.39" dan2="-530.73" dan3="975.65" dat_trzby="2016-08-05T00:30:12+02:00" dic_popl="CZ00000019" dic_poverujiciho="CZ683555118" id_pokl="/5546/RO24" id_provoz="273" porad_cis="0/6460/ZQ42" pouzit_zboz1="784.00" pouzit_zboz2="967.00" pouzit_zboz3="189.00" rezim="0" urceno_cerp_zuct="324.00" zakl_dan1="-820.92" zakl_dan2="-3538.20" zakl_dan3="9756.46" zakl_nepodl_dph="3036.00"/><KontrolniKody><pkp cipher="RSA2048" digest="SHA256" encoding="base64">a0asEiJhFCBlVtptSspKvEZhcrvnzF7SQ55C4DhnStnSu1b37GUI2+Dlme9P94UCPZ1oCUPJdsYOBZ3IX6aEgEe0FJKXYX0kXraYCJKIo3g64wRchE7iblIOBCK1uHh8qqHA66Isnhb6hqBOOdlt2aWO/0jCzlfeQr0axpPF1mohMnP3h3ICaxZh0dnMdju5OmMrq+91PL5T9KkR7bfGHqAoWJ0kmxY/mZumtRfGil2/xf7I5pdVeYXPgDO/Tojzm6J95n68fPDOXTDrTzKYmqDjpg3kmWepLNQKFXRmkQrkBLToJWG1LDUDm3UTTmPWzq4c0XnGcXJDZglxfolGpA==</pkp><bkp digest="SHA1" encoding="base16">9356D566-A3E48838-FB403790-D201244E-95DCBD92</bkp></KontrolniKody></Trzba></soap:Body></soap:Envelope>