编码为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
解码后的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