Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数字签名-将Pkcs7分离到XML-DSIG_Xml_Xml Signature_Pkcs#7 - Fatal编程技术网

数字签名-将Pkcs7分离到XML-DSIG

数字签名-将Pkcs7分离到XML-DSIG,xml,xml-signature,pkcs#7,Xml,Xml Signature,Pkcs#7,我正在与以下情景作斗争: XML消息在客户端创建,并使用mozilla的window.crypto.signText进行数字签名。签名后,消息和签名通过webservice.net传输到服务器。在这之前一切都很好 在服务器上,XML应包含在另一个可公开访问的XML文档中。还应公布签名,以授予不可抵赖性 问:是否有一个平滑的选项可以将分离的Pkcs7转换为XML-DSIG,例如.net framework中的功能 问题2:或者不使用外部插件就可以在客户端创建XML-DSIG吗 谢谢你的帮助 Alo

我正在与以下情景作斗争:

XML消息在客户端创建,并使用mozilla的window.crypto.signText进行数字签名。签名后,消息和签名通过webservice.net传输到服务器。在这之前一切都很好

在服务器上,XML应包含在另一个可公开访问的XML文档中。还应公布签名,以授予不可抵赖性

问:是否有一个平滑的选项可以将分离的Pkcs7转换为XML-DSIG,例如.net framework中的功能

问题2:或者不使用外部插件就可以在客户端创建XML-DSIG吗

谢谢你的帮助


Alois Paulin

由于数字签名格式XML和PKCS7的性质,无法从一种格式转换为另一种格式

在一个非常简单的解释中,格式的签名除其他内容外,还包含一些称为DigestInfo的特定数据结构,其中包含数据摘要和OID对象标识符,并已使用用户的私钥进行加密。该格式使用用户的私钥将加密算法的最后一步再次应用于通过消化原始XML数据和某些特定XML DSig数据结构计算出的不同数据值。因此,由于两个加密值将不相同,因此只能通过使用用户的私钥对数据进行签名来生成XML DSig签名,而您将无法访问私钥,因此无法访问私钥名称

从这个解释来看,你第一个问题的答案是否定的,没有平滑的选择,根本不可能

因此,唯一的选择是直接在客户端生成XMLDSIG。使用标准Javascript是不可能做到这一点的,Firefox的window.crypto只生成PKCS7分离签名。在我的公司,我们通过使用applet来解决这个问题,这是数字签名行业的一个常见解决方案,有很多商业解决方案,也有一些开源解决方案。如果您不想要浏览器插件,那么在您的情况下,这可能不是一个选项


CAPICOM基于windows的active/X组件,您可以在Microsoft安装程序中使用,它也不会生成XML DSig,仅生成CMS/PKCS7。

由于数字签名格式XML和PKCS7的性质,无法从一种格式转换为另一种格式

在一个非常简单的解释中,格式的签名除其他内容外,还包含一些称为DigestInfo的特定数据结构,其中包含数据摘要和OID对象标识符,并已使用用户的私钥进行加密。该格式使用用户的私钥将加密算法的最后一步再次应用于通过消化原始XML数据和某些特定XML DSig数据结构计算出的不同数据值。因此,由于两个加密值将不相同,因此只能通过使用用户的私钥对数据进行签名来生成XML DSig签名,而您将无法访问私钥,因此无法访问私钥名称

从这个解释来看,你第一个问题的答案是否定的,没有平滑的选择,根本不可能

因此,唯一的选择是直接在客户端生成XMLDSIG。使用标准Javascript是不可能做到这一点的,Firefox的window.crypto只生成PKCS7分离签名。在我的公司,我们通过使用applet来解决这个问题,这是数字签名行业的一个常见解决方案,有很多商业解决方案,也有一些开源解决方案。如果您不想要浏览器插件,那么在您的情况下,这可能不是一个选项


CAPICOM您可能在Microsoft安装程序中使用的基于windows的active/X组件也不会生成XML DSig,仅生成CMS/PKCS7。

评论您的旧答案-因为您似乎对Web应用中的数字签名很了解,我想知道您是否对我的问题有什么建议?这也是另一个问题-是否可以反过来-即将XMLDSig转换为PKCS7签名?这就是我在第一段中的意思。您无法从其中一个转换为另一个。请评论您的旧答案-因为您似乎对网络应用中的数字签名很了解,我想知道您是否对我的问题有什么建议?这也是另一个问题-是否可以反过来-即将XMLDSig转换为PKCS7签名?这就是我在第一段中的意思。不能从一个转换为另一个。