我签名完了没有ds前缀什么原因?大神帮忙看看我的签名:
<MessageSuit><Message id="355010000172201804161131"><Plain id="FCReq"><version>1.0.1</version><transId>FCReq</transId><merId>355010000172</merId><stages>1003</stages><amount>0.01</amount><currency>156</currency></Plain></Message><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI="#FCReq"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>Iq5k121poJVvYzs8OPxs3+X3xGU=</DigestValue></Reference></SignedInfo><SignatureValue>pl5AJ2KLqv4LQAq23VCzMOI4c7Yja+9rxXk+VItL3wKQeCAnEgRQvAkYigvsemA08TYF5To/PX2C
ERLdDUfQnKOOs+1s1NLG3qRS97VeMswddkKTC+2AHQkVymyi986xxZAKFrSsXAGzBiDBXFD1iW7j
7wThQGszM5GIqLr9f5E=</SignatureValue></Signature></MessageSuit>
正确签名:
<MessageSuit><Message id=""><Plain id="FCReq"><version>1.0.1</version><transId>FCReq</transId><merId>355010000172</merId><stages>1003</stages><amount>0.01</amount><currency>156</currency></Plain><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
<ds:SignedInfo> 
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod> 
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod> 
<ds:Reference URI="#FCReq"> 
<ds:Transforms> 
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform> 
</ds:Transforms> 
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> 
<ds:DigestValue>Iq5k121poJVvYzs8OPxs3+X3xGU=</ds:DigestValue> 
</ds:Reference> 
</ds:SignedInfo> 
<ds:SignatureValue> 
SNPUMrwiqxVBbO38Oft+wHcEQh0ySLhNlKZvNDq2DhTYEtKhI666YSg+U8bkA8euYBoF75grCSHz 
sroSHmWOOQYd6xGJ5LlraJssEWWgX2UkE2XpH3rUdVUclCPX0xWplQwsZp+GtWcXumrUb1GXl2yv 
4HFUgYMyI6zbr0I60rY= 
</ds:SignatureValue> 
</ds:Signature></Message></MessageSuit>我的代码:
/// <summary>
        /// xml报文签名
        /// </summary>
        /// <param name="xmlDoc">xml 的文档对象</param>
        /// <param name="key">商户私钥</param>
        /// <param name="uri">资源指定位置</param>
        /// <returns>签名后字符串</returns>
        private string signXml(XmlDocument xmlDoc, RSA key, string uri)
        {
            //创建xml签名对象
            SignedXml signedXml = new SignedXml(xmlDoc);
            //指定私钥
            signedXml.SigningKey = key;
            //指定标准化:http://www.w3.org/TR/2001/REC-xml-c14n-20010315 
            signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigC14NTransformUrl;
            //指定签名方法:rsa-sha1
            signedXml.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA1Url;
            //设置keyInfo为null
            signedXml.KeyInfo = null;
            //创建引用对象
            Reference reference = new Reference();
            reference.Uri = "#" + uri;
            //指定Signature标签与原xml报文的组装方式:enveloped
            XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
            reference.AddTransform(env);
            //向签名对象中添加引用
            signedXml.AddReference(reference);            try
            {
                //计算数字签名
                signedXml.ComputeSignature();
            }
            catch (CryptographicException e)
            {
                //uri不正确
                throw new System.ArgumentException("E0008:签名使用的uri不正确,商户上送uri为:" + uri);
            }            //获取签名后的xml
            XmlElement xmlDigitalSignature = signedXml.GetXml();       
            //把签名加入到文档中
            xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true));
            //获取SignatureValue标签的值,然后每76个字节增加一个换行
            string signatureValue = xmlDoc.GetElementsByTagName("SignatureValue").Item(0).InnerText;
            //设置xml文档中的SignatureValue标签的值
            xmlDoc.GetElementsByTagName("SignatureValue").Item(0).InnerText = splitPer76AddLineBreak(signatureValue);
             
            return xmlDoc.OuterXml;
        }