繁体   English   中英

Bouncy Castle pem Reader 在读取公钥时抛出异常

[英]Bouncy Castle pem Reader Throws exception When Reading Public Key

我正在尝试使用公钥加密 C#(在 Unity 中)中的消息。 为此,我使用了 Bouncy Castle 库。 尝试使用充气城堡 pem 阅读器读取公钥时出现错误。 我从这里拿了这个代码。 我得到的具体错误是:

ArgumentException: illegal object in GetInstance: Org.BouncyCastle.Asn1.Dersequence

这是代码:

     static string encrypt(string plainText) {
        byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);

        PemReader pr = new PemReader(
            new StringReader(m_publicKey)
        );
        RsaKeyParameters keys = (RsaKeyParameters)pr.ReadObject();

        OaepEncoding eng = new OaepEncoding(new RsaEngine());
        eng.Init(true, keys);

        int length = plainTextBytes.Length;
        int blockSize = eng.GetInputBlockSize();
        List<byte> cipherTextBytes = new List<byte>();
        for (int chunkPosition = 0;
            chunkPosition < length;
            chunkPosition += blockSize)
        {
            int chunkSize = Math.Min(blockSize, length - chunkPosition);
            cipherTextBytes.AddRange(eng.ProcessBlock(
                plainTextBytes, chunkPosition, chunkSize
            ));
        }
        return Convert.ToBase64String(cipherTextBytes.ToArray());
    }

实例化 pem 读取器时发生错误。 我的代码和链接的示例代码略有不同(我使用 StringReader 而不是从文件中读取),但是如果我从文件中读取,我会得到相同的错误。 有没有人有任何想法?

好的,我希望这可以帮助其他犯这种愚蠢错误的人。 我的公钥格式如下:

-----END RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

显然这种格式不被接受。

从页眉和页脚中删除“RSA”后,它能够加载公钥。

编辑:如果对任何人有帮助,密钥是由 go 的 crypto/rsa 包生成的。 (GenerateKey 函数)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM