Math 编码到base64

Math 编码到base64,math,encoding,base64,decoding,Math,Encoding,Base64,Decoding,当解码时,base64字符串adewnjcandezndgxodcnjcynzixmzu5nju1m0vbm0jfoee5qzm=是106741348187b672721359553ea3be8a9c3。当我将106741348187B6727213596553EA3BE8A9C3编码到base64时,结果是mta2nzqxmzq4mtg3qjy3mjymtm1oty1ntnfqtncthboumz 我确信未编码字符串是第一个base64字符串的输入,因为未编码字符串由用户id和授权令牌组成。因

当解码时,base64字符串
adewnjcandezndgxodcnjcynzixmzu5nju1m0vbm0jfoee5qzm=
106741348187b672721359553ea3be8a9c3
。当我将
106741348187B6727213596553EA3BE8A9C3
编码到base64时,结果是
mta2nzqxmzq4mtg3qjy3mjymtm1oty1ntnfqtncthboumz


我确信未编码字符串是第一个base64字符串的输入,因为未编码字符串由用户id和授权令牌组成。因此,如果从base64解码使这两个特定的字符串连接起来,但编码会导致与解码它们的字符串不同的结果,未编码的字符串到底是如何编码为base64字符串的?

问题是解码输入的结果不是
106741348187B6727213596553EA3BE8A9C3
;它是
\01067\041348187B6727213596553EA3BE8A9C3
。请注意这两个空字节,它们可能在重新编码之前被剥离

如果您解码并重新编码而不去除这些空值,您将获得返回的输入:

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | base64
ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=
为了更好地了解发生了什么,请查看解码器输出的实际字节:

$ echo "ADEwNjcANDEzNDgxODdCNjcyNzIxMzU5NjU1M0VBM0JFOEE5QzM=" | base64 -d | od -c
0000000  \0   1   0   6   7  \0   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

我想这是没有必要的,但我没有看到解码的输出。你在那里使用的编码器是什么?我正在使用PHP的base64_编码。像PHP这样的成熟语言应该有一个不充分的base64编码函数,这有什么原因吗?好的,所以看到输出会有所帮助。我的解码方法没有显示空字节。谢谢。这对我很有启发,因为我也没有意识到bash有这个功能。