如何使用没有pem文件的bouncycastle加密(RSA + PKCS1)

时间:2016-11-03 17:37:45

标签: c# encryption rsa bouncycastle

我试图加密给定我从API检索到的公钥的字符串。公钥是纯文本(基本编码64),类似于:

  

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCH9 / o5IG0tu9VNYiJSltzV5ewK9TNoLeToSYkoH4lEytRM61AMeO6aBRZ3dsY1Czb + fgK6Q + M4ub / 9jbcXIGmVLvTypdn + VW1dotXzMP5sfDgCUuhScjH7gqsXQAvaF5LxjLUbL5I5zCGXbPVwBCEyVhN0oNp3TtNKoMcF6AjNhwIDAQAB

我现在想要使用此公钥加密字符串。我发现了一些从PEM格式中读取的relevant code,但很明显它不会在这里工作:

byte[] dataToEncrypt = Encoding.UTF8.GetBytes(aString);
var encryptEngine = new Pkcs1Encoding(new RsaEngine());
using (var txtreader = new StringReader(key))
{
    var keyParameter = (AsymmetricKeyParameter)new PemReader(txtreader).ReadObject();
    encryptEngine.Init(true, keyParameter);
}

var encrypted = Convert.ToBase64String(encryptEngine.ProcessBlock(dataToEncrypt, 0, dataToEncrypt.Length));

keyParameter最终为空。 Bouncycastle的文档似乎很少,我不知道我应该使用什么来获得正确的AsymmetricKeyParameter类型。

我想我可以从密钥写一个PEM文件,但感觉有点浪费。

所以更广泛的问题是:当我将公钥作为字符串时,如何使用PKSC1填充加密?

更准确的问题:我应该使用哪种AsymmetricKeyParameter类型?

提前致谢。

修改 我使用原生RSACryptoServiceProvider here找到了解决方法。不过,知道如何用BC做这件事会很好。

0 个答案:

没有答案