将Base64转换为十六进制混淆

问题描述 投票:0回答:1

我正在研究将base64转换为十六进制的问题,并以问题提示为例:

[3q2+7w==应该产生deadbeef

但是如果我使用base64数字集ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/手动执行此操作,则会得到:

3 110111
q 101010
2 110110
+ 111110
7 111011
w 110000

作为二进制字符串:

110111 101010 110110 111110 111011 110000

分为四部分:

1101 1110 1010 1101 1011 1110 1110 1111 0000

十六进制

d e a d b e e f 0

所以不是deadbeef0而不是deadbeef吗?还是我在这里缺少什么?

base64 hex base
1个回答
0
投票
Base64用于编码字节(8位)。

您的base64字符串包含6个字符和2个填充字符(=),因此理论上您可以编码6 * 6bits = 36位,等于9个4位十六进制数字。但是实际上,您必须以字节为单位进行思考,然后您只有4个字节(32位)的重要信息。其余4位(额外的'0')必须忽略。

您可以将无关紧要的位数计算为:

y : insignificant bits x : number of base64 characters (without padding) y = (x*6) mod 8

因此,您的情况:

y = (6*6) mod 8 = 4

因此您最后需要忽略4个无关紧要的位。
© www.soinside.com 2019 - 2024. All rights reserved.