如何导入私钥并使用它在C#中签署文档?

时间:2011-07-29 10:00:25

标签: c# digital-signature x509certificate

我已生成自签名证书(X509证书),并希望使用私钥对某些文档进行签名以进行数字签名,我在C#中进行此操作。

如何导入.pvk文件?我是否需要从密钥库导入?

我可以使用此代码签名并创建数字签名吗?

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(RSA);
RSAFormatter.SetHashAlgorithm("SHA1");
RSAFormatter.SetKey(cert.PrivateKey);
byte[] SignedHash = RSAFormatter.CreateSignature(data);

2 个答案:

答案 0 :(得分:0)

尝试像这样初始化你的RSA:

RSACryptoServiceProvider RSA = (RSACryptoServiceProvider)cert.PrivateKey;

要生成签名,请使用rsa.SignData(data, "sha1");

答案 1 :(得分:0)

首先,您需要确定签名的格式。如果您处理证书,很可能您将创建PKCS#7或CMS签名。 .NET中有一个用于CMS签名的类。

接下来的步骤取决于您是需要基于证书的PKCS#7签名还是RSA(PKCS#1)签名。

附注 - 将几个问题合二为一会使得很难正确回答。如果您进行搜索,大部分问题都会有很多答案。