许多文件类型都有一个标头(文件的前几个字节),其中包含一些固定信息,通过这些信息可以将文件识别为 gz、png、pdf 等。
因此,每个 Base64 编码的 gz 文件也将以特定的 Base64 字符序列开头,通过该序列可以识别该文件。
A gzip 文件 https://en.wikipedia.org/wiki/Gzip始终以两个字节序列 0x1f 0x1b 开头,在 Base64 编码中为H4
加上范围内的第三个字符s
to v
.
原因是,每个 Base64 字符代表原始字节的 6 位,因此这两个字节0x1f 0x1b
使用两个 Base64 字符(12 位)加上第三个字符的前 4 位进行编码。
基于此,我想说您在那里显示的不是 base64 编码的 gzip。
其他例子有:
-
png https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
以。。开始:0x89 0x50 0x4e 0x47 0x0d 0x0a 0x1a 0x0a
Base64 编码:iVBORw0KGg...
-
jpg https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format#File_format_structure
以。。开始:0xFF 0xD8 0xFF 0xD0
Base64 编码:/9j/4...
-
gif https://en.wikipedia.org/wiki/GIF#File_format
以。。开始:GIF
Base64 编码:R0lG
-
tif http://fileformats.archiveteam.org/wiki/TIFF#Identification
a) 小端:
以。。开始:0x49 0x49 0x2A 0x00
Base64 编码:SUkqA
b)大端:
以。。开始:0x4D 0x4D 0x00 0x2A
Base64 编码:TU0AK
-
flv https://en.wikipedia.org/wiki/Flash_Video
以。。开始FLV
Base64 编码:RkxW
-
wav/avi/webp 等
几种音频/视频/图像/图形格式基于RIFF(资源交换格式) https://en.wikipedia.org/wiki/Resource_Interchange_File_Format共同的部分是所有文件都以RIFF
Base64 编码:UklGR
之后RIFF
header 中,您会发现从第 9 个字节开始的 4 个字节开始的特定格式。
在下面的_
用作任何字符的占位符。
wav https://en.wikipedia.org/wiki/WAV
以。。开始:RIFF____WAVE
Base64 编码:UklGR______XQVZF
webp https://en.wikipedia.org/wiki/WebP
以。。开始:RIFF____WEBP
Base64 编码:UklGR______XRUJQ
avi https://en.wikipedia.org/wiki/Audio_Video_Interleave
以。。开始:RIFF____AVI
Base64 编码:UklGR______BVkkg
关于问题中的具体例子:
在更新的问题中,附图中有一个提示
数据是第一位的Base32 编码 https://en.wikipedia.org/wiki/Base32然后进行base64编码。
当我们喂养一个在线base32解码器 https://emn178.github.io/online-tools/base32_decode.html与问题中给出的字符串(JA2HGSKBJI4DSZ2WGRAS...
),我们得到:
H4sIAJ89gV4A/+1ZURaEIAi8SkfQ+1/O3f7MtEBfMgz9rC/diXmIA5hSzun3HNdBbgbtVP2v/2+LowM837wFHKxZbmE9pQfsLOaiLAL8kvIk4MBma17ufHQbIJCXoWNZZKGPWB5QljvXIuXOmm0SgLixJw8HRC8Tbmz7x5eIspypaZHSWbj8cAhdjli2WUkR1sv2dZmwXhZlDnIcCl0GyrFX6fKkBEBTBsq+9uY2Ecug2Rf0xtaJlNdYJuxjP9kcd1LOW/fQXtb1sd3fSTGXFTx3UjfGFx6uJGjeIAAA
它开始于H4s
,所以根据我写的关于如何识别base64编码中的文件类型的内容,它是一个base64编码的gzip文件。
这可以保存在文本文件中,然后上传到base64decode.org https://www.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 进行编码。