【发布时间】:2014-09-03 10:18:40
【问题描述】:
我正在尝试使用 PHP 和 xmlseclibs 对 XML 文件进行签名。 但是所有验证工具都说我的签名无效。 XMLSpy 说:“计算的摘要值与参考摘要不匹配”
这是我的 XML:
<root><value>x</value></root>
这是我得到的摘要:
KaMTM32K5rXl9U6MgG2BXuzNxoQ=
我用来获取它的方法:
1.) PHP:
$doc = new DOMDocument();
$doc->loadXML('<root><value>x</value></root>');
echo base64_encode(sha1($doc->documentElement->C14N(), true));
2.) OpenSSL:
openssl dgst -binary -sha1 test.xml | openssl enc -base64
3.) 本网站:http://hash.online-convert.com/sha1-generator
这是 XMLSpy 以某种方式获得并且有效的摘要:
HedaN7TMgHgq2bRypzavMuFLoCg=
如何获得此摘要?
【问题讨论】:
-
摘要值可能不仅取决于要签名的 blob,还取决于在您的 xml 签名中对其进行签名的引用转换。如果您可以共享您的签名文件,这将有所帮助。请注意,使用相同的规范化 (C14N) 签署此 blob 时,我得到的哈希值与您相同。
标签: php xml xml-signature xmlspy xmlseclibs