将Base64转换为Hex混淆

时间:2019-12-06 18:14:37

标签: base64 hex base

我正在研究将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?还是我在这里想念东西?

1 个答案:

答案 0 :(得分:1)

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个无关紧要的比特。