编码为base64

Encoding to base64

解码后的base64字符串ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=106741348187B6727213596553EA3BE8A9C3。当我将 106741348187B6727213596553EA3BE8A9C3 编码为 base64 时,结果是 MTA2NzQxMzQ4MTg3QjY3MjcyMTM1OTY1NTNFQTNCRThBOUMz

我确定未编码的字符串是第一个 base64 字符串的输入,因为未编码的字符串由用户 ID 和授权令牌组成。因此,如果从 base64 解码给了我这两个特定的字符串连接,但编码结果与解码后的字符串不同,那么未编码的字符串到底是如何编码到 base64 字符串开头的?

问题是解码输入的结果不是 106741348187B6727213596553EA3BE8A9C3;这是 0671348187B6727213596553EA3BE8A9C3。请注意两个空字节,它们可能会在您重新编码之前被删除。

如果您在不去除这些空值的情况下解码并重新编码,您将得到输入:

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | base64
ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=

为了更好地了解发生了什么,请查看解码器输出的实际字节数:

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | od -c
0000000  [=11=]   1   0   6   7  [=11=]   4   1   3   4   8   1   8   7   B   6
0000020   7   2   7   2   1   3   5   9   6   5   5   3   E   A   3   B
0000040   E   8   A   9   C   3
0000046