首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PHP的摘要值错误

使用PHP的摘要值错误
EN

Stack Overflow用户
提问于 2015-03-14 23:00:48
回答 1查看 1K关注 0票数 0

我得到了字符串:

代码语言:javascript
复制
$string = '<Predstavitev xmlns="http://www.sigen.si/PodpisaniDokument" Id="MyVisualisation2"><Podatki ca="SIGEN-CA" dsPodjetja="" dsUporabnika="12345678" emso="1212912500444" maticna="" serial="2462933412018"/></Predstavitev>';

并且它的摘要值应该是

代码语言:javascript
复制
tmLGK3IVc1mC/r5ScUKXQ46wcCA=

但是当我使用这段PHP代码时

代码语言:javascript
复制
echo base64_encode(hash('SHA1', $string, true));

输出为

代码语言:javascript
复制
yszGh284QybUiyVNLfQlkh358qQ=

SOAP中引用了规范化方法(http://www.w3.org/TR/2001/REC-xml-c14n-20010315)和摘要方法算法(http://www.w3.org/2000/09/xmldsig#sha1)。

感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 04:32:52

在进行散列之前,您需要对字符串进行canonicalize

只需将字符串添加到DomDocument并从元素Predstavitev获取C14N

代码语言:javascript
复制
$string = '<Predstavitev xmlns="http://www.sigen.si/PodpisaniDokument"     
Id="MyVisualisation2"><Podatki ca="SIGEN-CA" dsPodjetja="" 
dsUporabnika="12345678" emso="1212912500444" maticna="" 
serial="2462933412018"/></Predstavitev>';

$xml = new DomDocument();

$xml->loadXML($string);

$node = $xml->getElementsByTagName('Predstavitev');

echo base64_encode(hash('SHA1', $node->item(0)->C14N(), true));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29050349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档