如何从 base 64 编码字符串中获取十六进制块?
Posted
技术标签:
【中文标题】如何从 base 64 编码字符串中获取十六进制块?【英文标题】:How do I get hex blocks from a base 64 encoded string? 【发布时间】:2013-11-19 09:54:55 【问题描述】:在this article 和this XKCD 中,它们都将密码数据显示为十六进制分组。
但是,在文件中它是 base64 编码的。我可以使用什么来将该输出与 bash 脚本匹配?我试过了:
echo -n "7WkoOEfwfTTioxG6CatHBw==" | base64 -d
echo -n "7WkoOEfwfTTioxG6CatHBw==" | openssl enc -d -base64
他们在做什么,我如何将它们解码为十六进制块?
【问题讨论】:
【参考方案1】:如果我理解正确,我认为要求是将 base64 编码字符串转换为 8 字节块(16 个十六进制数字)的十六进制字符串。如果是这样,od -t x8 -An
,经过 base64 解码后将带您到那里:
$ echo -n "7WkoOEfwfTTioxG6CatHBw==" | base64 -d | od -t x8 -An
347df047382869ed 0747ab09ba11a3e2
$
【讨论】:
我回到家后会测试这个,如果它有效,我会将此标记为答案。谢谢! P.S.两个独立的来源如何“同意”一个相当具体的 base 64 解码为 8 字节的十六进制字符串块,并以相同的方式呈现? @Ehryk - 我认为没有什么需要达成一致的。一串 ascii 字符以 1:1 的方式映射到它的 base64 编码。类似地,一串 ascii 字符以 1:1 的方式映射到其十六进制字符串表示。因此,通过关联,base64 编码以 1:1 的方式映射到其十六进制字符串表示。 ... 然后他们都将它们分成 8 字节/16 位的块。我怀疑这与底层的 3DES 加密有关,但两位作者似乎都“直观地理解”了这一点。这显然是“要做的事情”吗? 是 - 3des 块大小为 64 位(或 8 字节或 16 十六进制数字或 8*4/3 base64“数字”)en.wikipedia.org/wiki/Triple_DES以上是关于如何从 base 64 编码字符串中获取十六进制块?的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS:如何将base64编码的字符串解码回二进制? [复制]
如何使用 javascript 获取 base64 编码图像的地址