带x509证书和加密的数字签名

时间:2012-04-20 10:32:32

标签: c# java digital-signature x509 x509certificate2

我想签署将在服务器上验证的xml文档。我不知道如何使用.cer和.pfx文件等数字证书对xml文件进行签名和加密。我用Google搜索了发现了各种例子,但无法理解标准方式,即

  

对xml文件进行签名和加密的分步过程是什么?

这里有一个问题,

  

我想在这样的客户端(.net c#代码)上签名和加密文件   它可以在服务器上验证和解密(java代码)

2 个答案:

答案 0 :(得分:1)

如果你想在C#和Java中都这样做,你可能想看看BouncyCastle。这是一个用于加密的流行库,它支持C#和Java。

资源:http://www.bouncycastle.org/

答案 1 :(得分:0)

您需要的是XMLDSig和XMLEnc(这些是用于以XML方式对XML进行签名和加密的相应标准的名称,与PKCS7 / CMS相反,后者将数据加密并将数据标记为不透明blob)。

Java内置了XMLDSig API(read the article here),但XMLEnc似乎没有本机方式。

.NET Framework 4.0还具有用于XML签名和加密的内置机制,但它们并不那么明显。 See how-tos here

我们公司为SecureBlackbox安全任务提供了广泛的库,SecureBlackbox包括对XMLDSig,XMLEnc和XAdES的灵活易用的支持。 .NET和Java版本都可用。阅读SecureBlackbox的details about XMLBlackbox包。

更新:如果您不关心格式,并且XML数据的唯一路径是从一个特定位置到另一个特定位置,那么您可以使用PKCS#7 / CMS而不是XMLDSig和XMLEnc。 如上所述,CMS将您的数据视为不透明的blob并将其包装为二进制数据。 BouncyCastle是其中一个选项,SecureBlackbox也可以使用。