如何从 PEM 文件读取 RSA public 密钥并使用它在 C# 的 BouncyCastle 中加密?
How do I read RSA public key from PEM file and use it to encrypt in BouncyCastle in C#?
C# BouncyCastle 包含一个名为 Org.BouncyCastle.Utilities.IO.Pem.PemReader 的 class,它似乎采用 PEM 格式的 RSA public 密钥文件。我看了这个link:how can i convert pem public key to rsa public key with bouncycastle in c#?
但它似乎在 PemReader 上使用了一个名为 ReadObject 的不存在的方法。所以我写了下面的代码。
var pemReader = new PemReader(File.OpenText(@"...rsa public key file path ..."));
var pemObject = pemReader.ReadPemObject();
var rsaPublicKeyBytes = pemObject.Content;
获得 RSA public 字节后,我不确定如何进行下一步。我希望能够执行以下操作:
var rsaCipher = new RsaEngine();
var oaepEncoding = new OaepEncoding(rsaCipher, new Sha256Digest());
var publicKey = new RsaKeyParameters(...);
oaepEncoding.Init(true, publicKey);
var actualEncryptedBytes = oaepEncoding.ProcessBlock(plainBytes, 0, plainBytes.Length);
我想我不确定如何用 RSA public 字节构造 RsaKeyParameters。有人能指出我正确的方向吗?还是我完全走错了路?
您使用的 PemReader
有误,您需要 Org.BouncyCastle.OpenSsl
中的那个。
编辑:出于某种原因,OP 坚持认为此 class 没有 ReadObject
方法。确实如此,可见here.
像这样:
using System;
using System.IO;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Security;
namespace ScratchPad
{
class MainClass
{
public static void Main(string[] args)
{
var pemReader = new PemReader(File.OpenText(@"/Users/horton/tmp/key-examples/myserver_pub.pem"));
var pemObject = (Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters)pemReader.ReadObject();
var rsa = DotNetUtilities.ToRSA(pemObject);
// ... more stuff ...
}
}
}
C# BouncyCastle 包含一个名为 Org.BouncyCastle.Utilities.IO.Pem.PemReader 的 class,它似乎采用 PEM 格式的 RSA public 密钥文件。我看了这个link:how can i convert pem public key to rsa public key with bouncycastle in c#?
但它似乎在 PemReader 上使用了一个名为 ReadObject 的不存在的方法。所以我写了下面的代码。
var pemReader = new PemReader(File.OpenText(@"...rsa public key file path ..."));
var pemObject = pemReader.ReadPemObject();
var rsaPublicKeyBytes = pemObject.Content;
获得 RSA public 字节后,我不确定如何进行下一步。我希望能够执行以下操作:
var rsaCipher = new RsaEngine();
var oaepEncoding = new OaepEncoding(rsaCipher, new Sha256Digest());
var publicKey = new RsaKeyParameters(...);
oaepEncoding.Init(true, publicKey);
var actualEncryptedBytes = oaepEncoding.ProcessBlock(plainBytes, 0, plainBytes.Length);
我想我不确定如何用 RSA public 字节构造 RsaKeyParameters。有人能指出我正确的方向吗?还是我完全走错了路?
您使用的 PemReader
有误,您需要 Org.BouncyCastle.OpenSsl
中的那个。
编辑:出于某种原因,OP 坚持认为此 class 没有 ReadObject
方法。确实如此,可见here.
像这样:
using System;
using System.IO;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Security;
namespace ScratchPad
{
class MainClass
{
public static void Main(string[] args)
{
var pemReader = new PemReader(File.OpenText(@"/Users/horton/tmp/key-examples/myserver_pub.pem"));
var pemObject = (Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters)pemReader.ReadObject();
var rsa = DotNetUtilities.ToRSA(pemObject);
// ... more stuff ...
}
}
}