无法将“Org.BouncyCastle.Crypto.AmetryCipherKeyPair”类型的对象转换为“Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters”类型

问题描述 投票:0回答:2

这是从 txt 读取文件时工作正常的代码,但是当我从字符串中读取它时,我在这里收到错误

        public string encrypt(string plainText,string PrivateKey)
        {

            byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
           
            string filepath = path + "\\rsakeys\\pem_public.pem";
            string localPath = new Uri(filepath).LocalPath;
            PemReader pr = new PemReader(
                (StreamReader)File.OpenText(localPath)
            );

            var reader = new StringReader(PrivateKey);
            var pre = new PemReader(reader);
            var o = pr.ReadObject();

            var os = pre.ReadObject();
           
            RsaKeyParameters keys = (RsaKeyParameters)os;   >>> Here i am getting the error where os is the object readed from the string 

c# rsa bouncycastle
2个回答
0
投票

我遇到了同样的错误。 原因是,使用 KeyStore Explorer 软件,除了导出它之外,我还对 RSA 私钥进行加密。

1

因此,基本上,代码抱怨它正在读取非对称加密的密钥对,同时需要 RSA 私钥。

在导出 .pem 之前,我在“导出私钥”对话框中取消选中“加密”框,异常消失了。


-1
投票

这解决了我的问题

            var o = pr.ReadObject();
            AsymmetricCipherKeyPair keyPair=(AsymmetricCipherKeyPair)o;

            //As Keypair.public is RsaParamterKey

            Pkcs1Encoding eng = new Pkcs1Encoding(new RsaEngine());
            eng.Init(true, keyPair.Public);

© www.soinside.com 2019 - 2024. All rights reserved.