【问题标题】:Why Java Base64 decode returns unreadable characters为什么 Java Base64 解码返回不可读的字符
【发布时间】:2018-08-03 14:57:52
【问题描述】:

我有一个使用 Base64 编码的公钥,我被指示解码给定的编码字符串以获得需要用于 GPG 加密的实际公钥。

我正在做的是,我使用下面的代码来解码给定的字符串以获得实际的公钥,但是当我这样做时,我看到 Eclipse 控制台上打印了一些不可读的字符。

  import org.apache.commons.codec.binary.Base64;
    class Test 
    {
        String encodedPK = "mQGi..../../"; //I mentioned dummy here, due to security reasons
        byte[] decoded = Base64.decodeBase64(encodedPK);
        System.out.println(new String(decoded));
    }
    OUTPUT:- "qÕÍ•È陑™Ì

【问题讨论】:

  • Base64 解码为 byte[]byte[] 是不可读的,除非您将其编码为某种东西(例如 Base64)。
  • 谢谢,但是,我怎样才能从中取出公钥,他们说,我可以用 Base64 解码后得到它。
  • 有一些方法可以从byte[]恢复公钥。
  • 好的,你能指点我吗?
  • JDK好像不支持GPG,需要第三方库。 (例如 bouncycastle)

标签: java base64 decode


【解决方案1】:

因为它是一个可以工作的 base64 解码器。

加密密钥不是由可读字符组成的。它由在尝试时不太可能正确显示的任意字节组成。这就是为什么任何人都会想象将密钥编码为 base64 的原因:base64 是由文本构成的,可以通过基于文本的通信轻松交换。

在您将密钥从 base64 解码为 byte[] 之后,它就被完全解码了。你已经完成了解码的工作。任何试图使用这样一个键的东西都需要一个字节[],而不是可显示的字符。

【讨论】:

    【解决方案2】:

    答案是,我使用了一个在线 Base64 解码器工具来解码编码的密钥,剩下的事情工作顺利。所以,问题是,我没有正确解码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      相关资源
      最近更新 更多