Konvertieren eines öffentlichen RSA-Schlüssels in einen öffentlichen RFC 4716-Schlüssel mit Bouncy Castle

Ich möchte einen öffentlichen RSA-Schlüssel in etwas konvertieren, das ich als öffentlichen SSH-Schlüssel verwenden kann.

Derzeit wird von Bouncy Castle ein öffentlicher Schlüssel erstellt, der wie folgt aussieht:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq1Y5300i8bN+cI2U3wJE
Kh3xG/.........jbuz+WB0vvG
P25UwCle2k5siVMwbImEYsr+Xt0dsMmGVB3/6MHAqrM3QQdQ8p2E5TyzL+JYa1FT
gwIDAQAB
-----END PUBLIC KEY-----

Ich möchte, dass es ein ähnliches RFC 4716-Format hat:

ssh-rsa AAAAB3NzaC1yc2.......G1p2Ag3mZLFsks7RNHVLgMsGIAikQ==

Mein bisheriger Code für Bouncy Castle sieht folgendermaßen aus:

var r = new Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator();
r.Init(new KeyGenerationParameters(new SecureRandom(), 2048));
var keys = r.GenerateKeyPair();

var stringWriter = new StringWriter();

var pemWriter = new PemWriter(stringWriter);
pemWriter.WriteObject(keys.Private);
pemWriter.Writer.Flush();
stringWriter.Close();
PrivateKey = stringWriter.ToString();

stringWriter = new StringWriter();
pemWriter = new PemWriter(stringWriter);
pemWriter.WriteObject(keys.Public);
pemWriter.Writer.Flush();
stringWriter.Close();
PublicKey = stringWriter.ToString();

Wie formatiere und codiere ich den Schlüssel so, dass er so aussieht?

Hat jemand öffentliche SSH-Schlüssel mit Bouncy Castle oder ähnlichem erstellt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage