如何从一个base64编码的字符串中获取十六进制块?

15
这篇文章这个XKCD中,密码数据均以十六进制分组显示。
然而,在文件中,它是base64编码的。我该使用什么来将输出与bash脚本匹配?我尝试过:
echo -n "7WkoOEfwfTTioxG6CatHBw==" | base64 -d
echo -n "7WkoOEfwfTTioxG6CatHBw==" | openssl enc -d -base64
他们在做什么?如何将它们解码为十六进制块?

xkcd Encryptic

2个回答

25

如果我理解正确的话,我认为要求是将一个base64编码的字符串转换成8字节(16个十六进制数字)一组的十六进制字符串。如果是这样的话,在进行base64解码后,使用od -t x8 -An命令可以实现:

$ echo -n "7WkoOEfwfTTioxG6CatHBw==" | base64 -d | od -t x8 -An
 347df047382869ed 0747ab09ba11a3e2
$ 

我回到家后会测试一下,如果可以的话,我会将其标记为答案。谢谢! - Ehryk
请问两个独立的来源是如何“达成一致”的,以将base64解码为8字节的十六进制字符串块,并以相同的方式呈现它? - Ehryk
@Ehryk - 我认为没有太多需要达成一致的地方。ASCII字符串以1:1的方式映射到其base64编码。同样,ASCII字符串以1:1的方式映射到其十六进制字符串表示。因此,通过关联,base64编码以1:1的方式映射到其十六进制字符串表示。 - Digital Trauma
然后他们将它们分成了8字节/16位数字块。我怀疑这与底层的3DES加密有关,但似乎这被两位作者“直觉理解”了。这难道是显然要做的事情吗? - Ehryk
这可能会有所帮助 https://dev59.com/unRB5IYBdhLWcg3w6LN2 - Digital Trauma
显示剩余2条评论

5

输出十六进制码而不换行:

echo "<BASE64>" | base64 -d | hexdump -v -e '/1 "%02x" '


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接