用于证明数字消息或文档的真实性的数学方案(维基百科)。加密工具包通常与公钥 - 私钥对一起使用,以对消息进行数字签名并验证消息。
我正在使用 xmlsec1 工具和 XML 数字签名 (XMLDSIG) 标准对 SOAP 信封进行签名。这是我正在使用的未签名的 SOAP 信封。 我正在使用 xmlsec1 工具和 XML 数字签名 (XMLDSIG) 标准对 SOAP 信封进行签名。这是我正在使用的未签名 SOAP 信封。 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue /> </Reference> </SignedInfo> <SignatureValue /> <KeyInfo> <X509Data /> </KeyInfo> </Signature> <soapenv:Body>This is the body of the SOAP envelope</soapenv:Body> </soapenv:Envelope> 我使用以下 xmlsec1 命令生成了签名信封。 xmlsec1 --sign --privkey-pem private_key.pem --output signed_test.xml test.xml 生成的签名信封如下 <?xml version="1.0"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>mT/qq9iX2rvTrWOPfE8thFOKdbA=</DigestValue> </Reference> </SignedInfo> <SignatureValue>eZFngILLORe+r/07FupC9YPJEB3n3qhTyEi0+3J7Ivv/20rm7YNU5CllAiUmLUDJ 0A9/YLDo2BOokrNmAkpWtxU1xs83FH3NDecfqEj1hgIXsbkMhJLh2szssR6nRoff ZV8FqWjQgUGS/IKLY0R9S/pxMxROKkiJ0J71hFHvuFphN/ZtpOGXdmX7oaS6EZmT BeSu8R2jGiMVbGyf4+EBxkpSN6VF4tn3MWgfP+MV7ICw3MHHgNVd7Nqy7vS+kOtZ hq2Tndg4b7O79XW2ni5tmpKJzHPDBfWFS+fEXHqkOFcPnb1rCk3oTOcaCqHOVZ1m BbiB7r2bxyrKDL7uIA4suw==</SignatureValue> <KeyInfo> <X509Data/> </KeyInfo> </Signature> <soapenv:Body>This is the body of the SOAP envelope</soapenv:Body> </soapenv:Envelope> 我试图理解 和 是如何计算的。根据 SOAP 信封,我知道的是: DigestValue 使用 SHA-1 算法,如元素中所指定。 SignatureValue 使用 RSA-SHA1 算法生成,如元素中所指定。 当我使用 <soap:Body> 算法对 sha1 进行哈希处理时,我得到了不同的值。如果有人可以展示正确生成这些值的详细步骤,我们将不胜感激。 我在这个 github 存储库中检查了 xmlsec 的代码:https://github.com/lsh123/xmlsec我认为这是正确的。 我对C和密码学的了解很差,所以我无法直接向你解释。 但是通过在整个项目中搜索“SignatureValue”,我在第805行找到了这个文件https://github.com/lsh123/xmlsec/blob/master/src/gcrypt/signatures.c#L805,其中解释 SignatureValue 基于 DSA-SHA1 的评论,这里是: DSA-SHA1 signature transform http://www.w3.org/TR/xmldsig-core/#sec-SignatureAlg: The output of the DSA algorithm consists of a pair of integers usually referred by the pair (r, s). The signature value consists of the base64 encoding of the concatenation of two octet-streams that respectively result from the octet-encoding of the values r and s in that order. Integer to octet-stream conversion must be done according to the I2OSP operation defined in the RFC 2437 [PKCS1] specification with a l parameter equal to 20. For example, the SignatureValue element for a DSA signature (r, s) with values specified in hexadecimal: r = 8BAC1AB6 6410435C B7181F95 B16AB97C 92B341C0 s = 41E2345F 1F56DF24 58F426D1 55B4BA2D B6DCD8C8 from the example in Appendix 5 of the DSS standard would be <SignatureValue>i6watmQQQ1y3GB+VsWq5fJKzQcBB4jRfH1bfJFj0JtFVtLotttzYyA==</SignatureValue> 希望它可以帮助您找到您想要的东西。
我在使用具有存储在 Azure 证书保管库中的不可导出私钥的证书来实现数字签名时遇到问题。 目前我拥有的就是这个主要功能...
如何在C#中计算XAdES SignatureTimestamp
我们有一个正在创建 XAdES 签名的应用程序。 EU DSS 验证器已正确验证签名。不幸的是,当尝试添加时间戳时,验证器表明......
`electron-builder` 在 mac 中因代码签名错误而失败
我有一个简单的构建脚本来构建/打包电子应用程序。电子构建器失败,堆栈跟踪如下。 /用户/vkiranmaniya/项目/Electron/GSTPro/node_modules/app-bui...
似乎无法将应用服务和Azure Functions等Azure资源配置为仅运行我们(自)签名的代码(即白名单)。所以我们必须以某种方式做
我正在尝试创建一个自动填充到Google表格中的表单。目前,我可以使用 自动将基本文本字段填充到 Google 表格中,但我现在需要尝试
我正在尝试使用我们正在制作的库来制作 PDF 文档的时间戳。我向 PDF 文档添加了一个新部分。我为签名和签名添加了新的注释对象...
我有一个 Go lambda,它能够使用 SDK 成功调用签名和验证 API。但是,当我无法使用 openssl 或 kms 来验证从本地 lambda 返回的签名时
我需要修改默认的 prestashop 数据库查询。我尝试过以下方法: 公共函数 ajaxProcessCheckProductName() { if ($this->tabAccess['view'] === '1') { $搜索 = 工具::
我正在研究使用密钥(pem)签署 JWT 令牌。 我做了一些调查,看来智威汤逊应该使用私钥来签署声明。 如果我可以与公众签署 JWT 声明怎么办...
我的导入/导出 GMP 功能有问题。 我尝试转换负数和正大整数,但是当我使用负数时,我会丢失符号。 有相关的例子吗? 经验...
我有一个 PDF,我已将认证签名嵌入到 PAdES 标准中。我的本地验证器脚本、DSS 演示 Web 应用程序和 ETSI 签名检查器都显示 pdf 签名...
我目前正在使用 TCPDF 在 PHP 中实现数字签名,以签署和导出 PDF 格式的文档。然而,当我尝试在 Adobe 等平台上验证签名的 PDF 时,我
我使用远程签名服务生成的现有签名创建了 CMS 签名。 在此之前,我对要使用 SHA256 签名的消息进行了哈希处理,然后将其发送到远程签名服务...
CMS 如何在 .NET Framework 4.8 中向 UnsignedAttribute 后签名添加内容
在 .NETFramework 4.8 中,System.Security.Cryptography.Pkcs.SignerInfo.UnsignedAttributes 属性仅返回数据副本,不会将更改传播回根 SignedCms 对象....
您可以在不“签名”的情况下向 PDF 添加带时间戳的防篡改功能吗?
使用数字签名对 PDF 进行签名时,可以使用受信任的时间戳服务来添加由时间戳机构签名的时间戳令牌。查看 PDF 签名时...
可以使用python endesive库对pdf进行多次签名吗?
我有一个 pdf,其中将同一文档的多个副本合并为一个。我想对每个副本进行数字签名,这意味着 pdf 必须具有多个数字签名。我正在使用 endesive
我有一个项目,我必须多次对 PDF 进行数字签名。我尝试过使用 TCPDF 来做到这一点,但似乎 TCPDF 只允许一个签名!因为当我导入已经签名的 PDF 时...
如何防止 PHP 在将子 XML 导入另一个 XML 时添加默认命名空间前缀
我正在使用 PHP 8.2,需要将 XML 节点从一个文档导入到另一个文档,而 PHP 不会自动添加“默认”命名空间前缀。这打破了数字签名......
使用Javascript从数字签名的PDF中提取RFC 3161时间戳
我正在尝试从我的 pdf 文档中提取签名时间,我知道它有来自下面的 Acrobat 的时间戳: 但是当我尝试打印经过身份验证的属性时,我找不到它们(OID