C# 使用Bouncy Castle PGP将公钥字节另存为字符串
我能够生成公钥/私钥对,并在它们之间进行加密/解密。现在,我需要向其他人发送一个PGP公钥的严格版本,但我正在努力解决如何最好地做到这一点 要获取公钥,我使用:C# 使用Bouncy Castle PGP将公钥字节另存为字符串,c#,bouncycastle,C#,Bouncycastle,我能够生成公钥/私钥对,并在它们之间进行加密/解密。现在,我需要向其他人发送一个PGP公钥的严格版本,但我正在努力解决如何最好地做到这一点 要获取公钥,我使用: inputStream = PgpUtilities.GetDecoderStream(inputStream); PgpPublicKeyRingBundle pgpPub = new PgpPublicKeyRingBundle(inputStream); foreach (PgpPublicKey
inputStream = PgpUtilities.GetDecoderStream(inputStream);
PgpPublicKeyRingBundle pgpPub = new PgpPublicKeyRingBundle(inputStream);
foreach (PgpPublicKeyRing kRing in pgpPub.GetKeyRings())
{
foreach (PgpPublicKey k in kRing.GetPublicKeys())
{
if (k.IsEncryptionKey)
{
return k;
}
}
}
我可以访问k
,这是PgpPublicKey
类的一个实例
从中提取的文件基本上是jibberish,它是公钥的字节表示。我需要的字符串版本,你通常会复制和粘贴之间的人
我在这里怎么做
谢谢 要使用Base64对文本表示中的键进行编码,只需在调用
PgpPublicKey.encode
之前将输出流包装在ArmoreOutputStream
中即可
您的示例扩展为将密钥获取为Base64编码字符串:
foreach (PgpPublicKeyRing kRing in pgpPub.GetKeyRings())
{
foreach (PgpPublicKey k in kRing.GetPublicKeys())
{
if (k.IsEncryptionKey)
{
MemoryStream memStream = new MemoryStream();
ArmoredOutputStream armoredStream = new ArmoredOutputStream(memStream);
k.Encode(armoredStream);
armoredStream.Close();
string keyString = Encoding.ASCII.GetString(memStream.ToArray());
//...
}
}
}