【问题标题】:How can I import private key and use it to sign document in C#?如何导入私钥并使用它在 C# 中签署文档?
【发布时间】:2011-10-15 19:58:41
【问题描述】:

我已经生成了一个自签名证书(X509 证书)并想使用私钥签署一些文档以进行数字签名,我正在使用 C# 进行。

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

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

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

【问题讨论】:

    标签: c# digital-signature x509certificate


    【解决方案1】:

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

    RSACryptoServiceProvider RSA = (RSACryptoServiceProvider)cert.PrivateKey;
    

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

    【讨论】:

    • 我可以这样初始化证书吗? X509Certificate2 cert = new X509Certificate2(privatekeyfile, password);
    【解决方案2】:

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

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

    旁注 - 将多个问题合二为一会导致难以正确回答。如果您进行搜索,您的大多数问题也会有很多答案。

    【讨论】:

    • 感谢您的回答。我是新来的,下次我会每个主题问一个问题
    猜你喜欢
    • 2022-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 2019-05-13
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多