【问题标题】:Save Public Key Bytes as String using Bouncy Castle PGP使用 Bouncy Castle PGP 将公钥字节保存为字符串
【发布时间】:2013-12-05 20:18:11
【问题描述】:

我能够生成公钥/私钥对,并在它们之间进行加密/解密。现在,我需要将 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 类的一个实例。

从中提取的文件基本上是乱码,它是公钥的字节表示。我需要您通常在人与人之间复制和粘贴的字符串版本。

我该怎么做?

谢谢!

【问题讨论】:

    标签: c# bouncycastle


    【解决方案1】:

    要使用 Base64 以文本表示形式对密钥进行编码,只需在调用 PgpPublicKey.Encode 之前将输出流包装在 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());
                //...
            }
        }
    } 
    

    【讨论】:

      猜你喜欢
      • 2016-02-12
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 2019-03-16
      • 2019-01-12
      • 1970-01-01
      • 2016-06-25
      相关资源
      最近更新 更多