我尝试使用此lib
在php中生成xml签名但生成的xml签名不能由.NET验证(c#)。
php生成的签名在签名标记上有ds前缀。 像这样<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
但是当我使用相同的算法(rsa sha1)在c#中生成签名时,此标记看起来像这样
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
我不明白问题是什么或如何解决这个问题。
答案 0 :(得分:0)
类XMLSecurityDSig的构造函数接受名为 $ prefix 的名称空间的参数,默认为&#34; ds&#34;,如果您提供前缀消失的空字符串。
构造强>
/**
* @param string $prefix
*/
public function __construct($prefix='ds')
{
var_dump($prefix);
$template = self::BASE_TEMPLATE;
if (! empty($prefix)) {
$this->prefix = $prefix.':';
$search = array("<S", "</S", "xmlns=");
$replace = array("<$prefix:S", "</$prefix:S", "xmlns:$prefix=");
$template = str_replace($search, $replace, $template);
}
$sigdoc = new DOMDocument();
$sigdoc->loadXML($template);
$this->sigNode = $sigdoc->documentElement;
}
示例:强>
$objDSig = new XMLSecurityDSig("");
电贺 罗宾