我在linux中有以下命令, 文件test64.dat中的base64编码字符串'rITqHhVbOjGIWelaJbg =='。 使用过的命令 -
# base64 -d -i test64.dat >> test.dat
# echo "IV=" `hexdump test.dat | head -1 | cut -f 2- -d ' ' | sed s/' '//g ` >> abc.txt
# cat abc.txt
IV= 84ac1eea7515e86c21c6a5676f6b6ec9
我想使用python base64模块解码与test64.dat中相同的字符串, 我试过下面的代码
hexdump.dump(base64.b64decode('rITqHhVbOjGIWelaJbg=='))
它输出为。
'AC 84 EA 1E 15 5B 3A 31 88 59 E9 5A 25 B8'
任何人都可以告诉我为什么base64解码输出不同,我做错了吗?
答案 0 :(得分:2)
这里有两个问题:
1)您的输入无效。它最后有太多=
,因此Linux输出包含“base64:invalid input”,你之后将其快速解码为十六进制。
2)hexdump没有给你你真正想要的格式;它将它视为一对字节对,并反转每对。例如,“ABCD”的输入最终默认输出为“4241 4443” - 请注意41之前的42和43之前的44的排序。
修复输入后,可以将输出格式传递给hexdump,为您提供所需的格式
echo rITqHhVbOjGIWelaJbg= | base64 -d | hexdump -e '16/1 "%02X " "\n"'
输出:
AC 84 EA 1E 15 5B 3A 31 88 59 E9 5A 25 B8