【发布时间】:2020-11-13 00:30:35
【问题描述】:
我正在尝试使用公钥加密 C#(在 Unity 中)中的消息。为此,我使用了 Bouncy Castle 库。尝试使用充气城堡 pem 阅读器读取公钥时出现错误。我从here 获取了这段代码。我得到的具体错误是:
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 而不是从文件中读取),但如果我从文件中读取,我会得到相同的错误。有人有什么想法吗?
【问题讨论】:
标签: c# encryption rsa bouncycastle