当前位置: 首页 > 知识库问答 >
问题:

使用Bouncy Castle PGP将公钥字节另存为字符串

左翰海
2023-03-14

我能够生成公钥/私钥对,并在它们之间加密/解密。现在,我需要将PGP公钥的字符串版本发送给其他人,但我正在努力解决如何最好地做到这一点。

要获取公钥,我使用:

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,它是公钥的字节表示。我需要您通常会在人与人之间复制和粘贴的字符串版本。

我怎么能在这里这么做?

谢谢

共有1个答案

柳向明
2023-03-14

要用Base64对文本表示中的键进行编码,只需在调用PgpPublicKey之前将输出流包装在ArmoredOutputStream中。编码。

您的示例扩展为将密钥作为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());
            //...
        }
    }
} 
 类似资料:
  • 我想得到一个文件内容的公钥,这是一个文件内容看起来像什么的例子(用生成): 如果我是对的,这不是公钥,但是可以从这个字符串中获取公钥。 这个答案回答了我的问题https://stackoverflow.com/a/19387517/2735398 但答案似乎不起作用。我有个例外: 当看到答案的评论时,我不是唯一有问题的人... 如何修复异常?或者有没有其他方法可以从字符串中获取公钥?

  • 如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?

  • 本文向大家介绍VBA 使用StrConv将单字节字符的字节数组转换为字符串,包括了VBA 使用StrConv将单字节字符的字节数组转换为字符串的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 因此,我正在使用Spongy Castle(Android)为RSA公钥生成PEM编码的字符串,并将其上传到服务器。这是我目前正在做的: 现在,您可能已经知道,我不确定如何构造或是否有更简单的方法来执行此操作。 当使用Bouncy Case时,我曾经这样做过 但是由于某种原因,海绵城堡中不存在PEMWriter类 问题答案: 好的,这可能不是最聪明的方法(或者也许是?),但是在检查了此

  • 问题内容: 我初学java,我需要像这样: 我不知道该怎么做。 问题答案: 这里有两个正交的概念: 将文本转换为二进制文件,通常通过 压缩二进制数据,例如使用 因此,最终您将要: 创建一个将结果写入所需结果的位置(例如,文件或通过 包裹在一个 包裹在使用适当的字符集(例如UTF-8) 将文字写到 关闭编写器,这将刷新并关闭其他所有内容。 例如: 请注意,即使我们无法创建书写器,我也要关闭,但是如果

  • 问题内容: 我想在GO中将字符串数组转换为字节数组,以便可以将其写到磁盘上。将字符串数组()解码为字节数组()的最佳解决方案是什么? 我正在考虑对字符串数组进行两次迭代,第一个迭代以获得字节数组所需的实际大小,然后第二个迭代写入每个元素的长度和实际字符串()。 解决方案必须能够以其他方式进行转换;从一个到一个。 问题答案: 让我们忽略一个事实,那就是走一秒钟。您需要做的第一件事是将序列化格式编组为