许多文件类型都有一个带有一些固定信息的标题(文件的前几个字节),通过这些信息可以将文件识别为 gz、png、pdf 等。
所以每个base64编码的gz文件也会以一定的base64字符序列开头,通过它可以识别。
gzip 文件总是以两个字节序列 0x1f 0x1b 开头,在 base64 编码中H4
加上s
to范围内的第三个字符v
。
原因是,每个 base64 字符代表原始字节的 6 位,因此这两个字节0x1f 0x1b
用两个 base64 字符(12 位)加上第三个字符的前 4 位编码。
基于此,我会说您在那里展示的不是 base64 编码的 gzip。
其他例子是:
PNG
以。。开始:0x89 0x50 0x4e 0x47 0x0d 0x0a 0x1a 0x0a
base64 编码:iVBORw0KGg...
jpg
以。。开始:0xFF 0xD8 0xFF 0xD0
base64 编码:/9j/4...
gif
以。。开始:GIF
base64 编码:R0lG
时间
a) 小端:开始于:0x49 0x49 0x2A 0x00
base64 编码:SUkqA
b) 大端:开始于:0x4D 0x4D 0x00 0x2A
base64 编码:TU0AK
flv
以。。开始FLV
base64 编码:RkxW
wav/avi/webp 等
几种音频/视频/图像/图形格式基于RIFF(资源交换格式)
,共同的部分是所有文件都以RIFF
base64 编码:UklGR
在RIFF
标头之后,您会发现从第 9 个字节开始的 4 个字节开始的特定格式。在下面_
用作任何字符的占位符。
wav
开头:RIFF____WAVE
base64 编码:UklGR______XQVZF
webp
开头:RIFF____WEBP
base64 编码:UklGR______XRUJQ
avi
开头:RIFF____AVI
base64 编码:UklGR______BVkkg
关于问题中的具体示例:
在更新的问题中,附图中有一个提示,
数据首先经过 base32 编码,然后经过 base64 编码。
当我们将问题 ( ) 中给出的字符串提供给在线 base32 解码器JA2HGSKBJI4DSZ2WGRAS...
时,我们得到:
H4sIAJ89gV4A/+1ZURaEIAi8SkfQ+1/O3f7MtEBfMgz9rC/diXmIA5hSzun3HNdBbgbtVP2v/2+LowM837wFHKxZbmE9pQfsLOaiLAL8kvIk4MBma17ufHQbIJCXoWNZZKGPWB5QljvXIuXOmm0SgLixJw8HRC8Tbmz7x5eIspypaZHSWbj8cAhdjli2WUkR1sv2dZmwXhZlDnIcCl0GyrFX6fKkBEBTBsq+9uY2Ecug2Rf0xtaJlNdYJuxjP9kcd1LOW/fQXtb1sd3fSTGXFTx3UjfGFx6uJGjeIAAA
它以 开头H4s
,所以根据我写的如何识别 base64 编码中的文件类型,它是一个 base64 编码的 gzip 文件。
这可以保存在文本文件中,然后上传到base64decode.org,在那里它将被转换为 gzip 文件。当您下载并打开该 gzip 文件时,它包含一个带有如下文本的文件:
00110000 00110000 00110001 00110001 00110000 00110001 00110000 00110000 00100000 00110000 00110000 00110001 00110001 00110000 00110001 00110000 00110001 00100000 ...
这种情况下的结论:原始字符串/文件是一个 gzip 文件,它首先是 base64 编码的,base64 编码的部分再次用 base32 编码。