首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PHP字符串转换为XML独占C14N

将PHP字符串转换为XML独占C14N
EN

Stack Overflow用户
提问于 2016-09-16 00:55:33
回答 1查看 1.1K关注 0票数 0

我有一个xml文档(soap消息),希望我需要对它的一部分(正文)进行签名。服务器中的算法需要独占C14n格式的body的sha256。

问题是我没有使用DOMDocument构建文档,我只是使用字符串和curl来发送,所以我不能使用->C14N(true)方法。

有其他选择吗?

PS:我尝试对sha256中的原始字符串进行哈希处理,但它给出的输出不同于经过哈希处理的独占c14n规范化字符串。

body示例:

代码语言:javascript
复制
<soap:Body xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-samplebody">
<node1 data="x"/>
</soap:Body>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-16 01:33:06

多亏了Paul Crovella,我不得不重新测试loadXML和C14N(),结果很糟糕,它有相同的指纹。因此,为了通过XML独占C14N计算正文的散列值,请执行以下操作:

代码语言:javascript
复制
$doc = new DOMDocument();
$doc->loadXML($string_to_be_signed);
echo base64_encode(sha1($doc->C14N(true)));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39516523

复制
相关文章

相似问题

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