【问题标题】:SHA1 with RSA using private key in c#SHA1 与 RSA 在 c# 中使用私钥
【发布时间】:2014-02-14 21:29:01
【问题描述】:

我试过了

X509Certificate2 _MiCertificado = new X509Certificate2(@"C:\Users\Lefczuk\Downloads\KitPruebas SW\CSD Pruebas\aad990814bp7_1210261233s.cer", "12345678a",X509KeyStorageFlags.MachineKeySet);
RSACryptoServiceProvider RSA1 = (RSACryptoServiceProvider)_MiCertificado.PrivateKey;

SHA1 hasher = new SHA1CryptoServiceProvider();
UTF8Encoding e = new UTF8Encoding(true);
byte[] bytesFirmados = RSA1.SignData(e.GetBytes(this.obtenerCadenaOriginal()),hasher);
Convert.ToBase64String(bytesFirmados);

但它会抛出 NullReferenceException,RSA1 对象为空。

有没有办法在不使用 .psk 或 .p12 文件或不编写 OpenSSL 命令的情况下解决此问题?

【问题讨论】:

    标签: c# rsa sha1 digital-certificate


    【解决方案1】:

    证书 (.cer) 文件(例如您正在加载的文件)不包含私钥,因此 _MiCertificado.PrivateKey 为空(这就是为什么 RSA1 也是空的)。没有私钥就无法对数据进行签名,因此您必须加载一个包含私钥的文件(例如 .p12)。

    【讨论】:

      猜你喜欢
      • 2011-02-02
      • 2012-03-14
      • 1970-01-01
      • 2015-12-25
      • 2014-05-16
      • 2013-10-15
      • 2015-03-21
      • 2011-07-31
      • 2018-10-07
      相关资源
      最近更新 更多