Php XML签名值无效
我正在尝试用PHP和xmlseclibs对XML文件进行签名。 然而,所有的验证工具都说我的签名无效。 XMLSpy说:计算的摘要值与引用摘要不匹配 这是我的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&
<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));