当前位置: 首页 > 知识库问答 >
问题:

SHA1摘要或Xades SignedProperties的计算不工作

葛昱
2023-03-14

我有以下XML文件:

<xad:SignedProperties Id="Sig_20151117_172752_SP">
                <xad:SignedSignatureProperties>
                    <xad:SigningTime>2015-11-17T16:27:59Z</xad:SigningTime>
                    <xad:SigningCertificate>
                        <xad:Cert>
                            <xad:CertDigest>
                                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                                <ds:DigestValue>vkVMqVMRsiSbo3Zgvk9sTfVtRDs=</ds:DigestValue>
                            </xad:CertDigest>
                            <xad:IssuerSerial>
                                <ds:X509IssuerName>CN=CERTEUROPE ADVANCED CA V4, OU=0002 434202180, O=Certeurope, C=FR</ds:X509IssuerName>
                                <ds:X509SerialNumber>747583</ds:X509SerialNumber>
                            </xad:IssuerSerial>
                        </xad:Cert>
                    </xad:SigningCertificate>
                    <xad:SignaturePolicyIdentifier>
                        <xad:SignaturePolicyId>
                            <xad:SigPolicyId>
                                <xad:Identifier>1234567</xad:Identifier>
                                <xad:Description>Description de la politique de signature numérique</xad:Description>
                            </xad:SigPolicyId>
                            <xad:SigPolicyHash>
                                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                                <ds:DigestValue>ZXphcmxramhxZGY=</ds:DigestValue>
                            </xad:SigPolicyHash>
                            <xad:SigPolicyQualifiers>
                                <xad:SigPolicyQualifier>
                                    <xad:SPURI>1234567</xad:SPURI>
                                </xad:SigPolicyQualifier>
                            </xad:SigPolicyQualifiers>
                        </xad:SignaturePolicyId>
                    </xad:SignaturePolicyIdentifier>
                    <xad:SignerRole>
                        <xad:ClaimedRoles/>
                    </xad:SignerRole>
                </xad:SignedSignatureProperties>
                <xad:SignedDataObjectProperties>
                    <xad:CommitmentTypeIndication>
                        <xad:CommitmentTypeId>
                            <xad:Identifier>1.2.840.113549.1.9.16.6.1</xad:Identifier>
                            <xad:Description>1.2.840.113549.1.9.16.6.1</xad:Description>
                        </xad:CommitmentTypeId>
                        <xad:ObjectReference>#D0-Reference</xad:ObjectReference>
                    </xad:CommitmentTypeIndication>
                </xad:SignedDataObjectProperties>
            </xad:SignedProperties>
<ds:Reference Id="Sig_20151117_172752_SP-Reference" Type="http://uri.etsi.org/01903/#SignedProperties" URI="#Sig_20151117_172752_SP">
            <ds:Transforms>
                <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <ds:DigestValue>euEROs8DacsBe3xqXBY5T+M07AI=</ds:DigestValue>
        </ds:Reference>

按以下顺序排列:

但这些尝试都行不通。是不是少了什么?(下面是我用来计算SHA-1摘要的C#方法:

public string CalculateHashSHA1(string input)
        {
            using (SHA1Managed sha1 = new SHA1Managed())
            {
                return Convert.ToBase64String(sha1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(input)));
            }
        }
  • 源文件在这里:https://1fichier.com/?y9spk6g2zk
  • 包含缩进的源文件:https://1fichier.com/?11r0i8izzt

我试图获得以下摘要:EuerOS8DACSBE3XQXBY5T+M07AI=

共有1个答案

罗晨
2023-03-14

事实上,我需要使用这个方法:

XmlDsigExcC14NTransform innerTransform = new XmlDsigExcC14NTransform(false);

结果是正确的。

 类似资料:
  • 对于我的项目,我必须对一个字符串进行数字签名,并且我正在使用bouncycastle JAR进行同样的签名。环境详情如下。 Weblogic 12c JSF,Primefaces Java版本:1.7.0\u 45 BC Jars:bcmail-jdk15on-152。jar,bcpkix-jdk15on-152。jar,bcprov-ext-jdk15on-152。jar,bcprov-jdk1

  • 以下两者之间的区别是什么:

  • Hash 算法 定义 Hash (哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash 值),并且不同的明文很难映射为相同的 Hash 值。 例如计算一段话“hello blockchain world, this is yeasy@github”的 MD5 hash 值为 89242549883a2ef85dc81b90f

  • 实验概要 这一章的实验指导中,你将会学到: 单独生成 ELF 格式的用户程序,并打包进文件系统中 创建并运行用户进程 使用系统调用为用户程序提供服务

  • 实验概要 这一章的实验指导中,你将会学到: 设备树的概念和读取 virtio 总线协议 块设备驱动的实现 将块设备托管给文件系统

  • 实验概要 这一章的实验指导中,你将会学到: 线程和进程的概念以及运行状态的表示 线程的切换 对 CPU 进行抽象在上面完成对线程的调度