簡體   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