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