【问题标题】:How do I get hex blocks from a base 64 encoded string?如何从 base 64 编码字符串中获取十六进制块?
【发布时间】:2013-11-19 09:54:55
【问题描述】:

this articlethis XKCD 中,它们都将密码数据显示为十六进制分组。

但是,在文件中它是 base64 编码的。我可以使用什么来将该输出与 bash 脚本匹配?我试过了:

echo -n "7WkoOEfwfTTioxG6CatHBw==" | base64 -d
echo -n "7WkoOEfwfTTioxG6CatHBw==" | openssl enc -d -base64

他们在做什么,我如何将它们解码为十六进制块?

【问题讨论】:

    标签: bash command-line base64 decode password-encryption


    【解决方案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
    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2015-07-25
    • 2017-07-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    相关资源
    最近更新 更多