我正在尝试使用C#读取仅包含RSA公钥的.pem文件。我无权访问私钥信息,我的应用程序也不需要它。文件myprivatekey.pem文件开头为
-----BEGIN PUBLIC KEY-----并以-----END PUBLIC KEY-----

我当前的代码如下:

    Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair keyPair;

    using (var reader = File.OpenText(@"c:\keys\myprivatekey.pem"))
        keyPair = (Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair)new Org.BouncyCastle.OpenSsl.PemReader(reader).ReadObject();

但是代码会在消息中抛出InvalidCastException


在没有私钥信息可用的情况下,如何使用Bouncy CaSTLe的PemReader读取公钥?

最佳答案

以下代码将从给定的文件名中读取公共(public) key 。对于任何生产代码,应更改异常处理。此方法返回AsymetricKeyParameter:

public Org.BouncyCastle.Crypto.AsymmetricKeyParameter ReadAsymmetricKeyParameter(string pemFilename)
{
    var fileStream = System.IO.File.OpenText(pemFilename);
    var pemReader = new Org.BouncyCastle.OpenSsl.PemReader(fileStream);
    var KeyParameter = (Org.BouncyCastle.Crypto.AsymmetricKeyParameter)pemReader.ReadObject();
    return KeyParameter;
}

关于c# - 仅使用Bouncy CaSTLe读取PEM RSA公钥,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11346200/

10-12 02:57