为什么Java Base64解码会返回不可读的字符

时间:2018-08-03 14:57:52

标签: java base64 decode

我有一个用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ÕÍ•È陑™Ì

2 个答案:

答案 0 :(得分:1)

因为它是可以正常工作的base64解码器。

密码密钥不是由可读字符组成的。它由任意字节组成,这些字节在尝试执行时可能无法正确显示。这就是为什么任何人甚至都可以想象对base64的密钥进行编码的原因:base64是由文本制成的,并且可以通过基于文本的通信轻松进行交换。

将密钥从base64解码为byte []后,它会被完全解码。您已经完成了解码工作。任何尝试使用此类密钥的操作都将要求一个byte [],而不是可显示的字符。

答案 1 :(得分:0)

答案是,我使用了一个在线Base64解码器工具来对编码的密钥进行解码,并使其余部分工作顺利。因此,问题是我没有正确解码。