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签名值无效_Php_Xml_Xml Signature_Xmlspy_Xmlseclibs - Fatal编程技术网

Php XML签名值无效

Php XML签名值无效,php,xml,xml-signature,xmlspy,xmlseclibs,Php,Xml,Xml Signature,Xmlspy,Xmlseclibs,我正在尝试用PHP和xmlseclibs对XML文件进行签名。 然而,所有的验证工具都说我的签名无效。 XMLSpy说:计算的摘要值与引用摘要不匹配 这是我的XML: <root><value>x</value></root> 我使用的方法是: 一,。PHP: $doc = new DOMDocument(); $doc->loadXML('<root><value>x</value></root&

我正在尝试用PHP和xmlseclibs对XML文件进行签名。 然而,所有的验证工具都说我的签名无效。 XMLSpy说:计算的摘要值与引用摘要不匹配

这是我的XML:

<root><value>x</value></root>
我使用的方法是:

一,。PHP:

$doc = new DOMDocument();
$doc->loadXML('<root><value>x</value></root>');
echo base64_encode(sha1($doc->documentElement->C14N(), true));
三,。本网站:

这是XMLSpy以某种方式获得的摘要,它是有效的:

HedaN7TMgHgq2bRypzavMuFLoCg=

如何获取此摘要?

XMLSpy在签名之前对XML进行格式化。它添加换行符和制表符,C14N不会删除这些。删除后,剩下的XML用于计算摘要:

<root>
    <value>x</value>

</root>

摘要值可能不仅取决于要签名的blob,还取决于在xml签名中对其进行签名的引用的转换。如果你能分享你的签名文件,那会有帮助的。请注意,当使用相同的规范化C14N对这个blob进行签名时,我得到了与您相同的哈希值。如何修复空格和新行?这是很久以前的事了。我认为您不会使用XMLSpy进行验证,也不会像XMLSpy那样格式化XML。更多信息请点击此处:
HedaN7TMgHgq2bRypzavMuFLoCg=
<root>
    <value>x</value>

</root>
$objDSig->addReference($doc, XMLSecurityDSig::SHA1, array('http://www.w3.org/2000/09/xmldsig#enveloped-signature'), array('force_uri' => TRUE));