文件与页面

Base64 文件转换器

本地运行

该工具本身是英文的;本页面将用您的语言对它进行说明。

使用 Base64 文件转换器

功能介绍

拖入或选择一个文件,即可得到它的 Base64 data URI;或者粘贴 data URI,将其解码还原为可下载的文件。

它完全在您的浏览器中运行:您输入的任何内容都不会被上传。

如何使用Base64 文件转换器

  1. 选择或拖入文件. 点击虚线框选择文件,或将文件拖到框上。如果拖入多个文件,只会转换第一个。
  2. 查看 data URI. 下方文本框会填入 data:type;base64,,后面是编码后的文件。其下一行显示原始大小、Base64 大小和额外开销。
  3. 复制结果. 按 Copy(复制),将完整的 data URI 放到剪贴板,例如粘贴到测试页面或案件记录中。
  4. 粘贴 data URI 进行解码. 反之,请将数据 URI 粘贴到下方的输入框中,例如 data:image/png;base64,... 系统支持 ;charset=utf-8 之类的参数、换行符、URL 安全的 Base64 以及百分比编码的数据 URI。
  5. 下载并检查文件. 按 Decode & Download(解码并下载)保存文件。如果它来自可疑的邮件或页面,打开前请用 File Type Sniffer 和 File Hash(文件哈希)检查。

示例

一张小图片

输入
A small PNG file, dropped onto the box or chosen by clicking it
输出结果如下所示
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==

Original: 70 bytes | Base64: 96 bytes (37% overhead) | Data URI: 118 bytes

下方的框中会填入数据:image/png;base64,...,并显示一行信息,包括原始大小、包含开销的 Base64 大小以及整个数据 URI 的长度:Base64 的大小比文件大约大三分之一。

检查内容

信号其含义
data: 之后的 MIME 类型这是浏览器为该文件报告的类型,通常来自文件扩展名。它不能证明文件的真实内容,因此被改名的文件会保留误导性的类型。
原始大小以 KB 为单位、保留一位小数的文件大小。小于约 50 字节的文件显示 0.0 KB,这是四舍五入造成的,并非空文件。
Base64 大小与额外开销Base64 部分的长度(不含 data:type;base64, 前缀),以及它比文件大多少。大文件会稳定在 33% 左右;极小的文件因填充而显示更高的数值。
解码后的文件名下载文件的名称为“decoded.”,后跟 MIME 类型的扩展名,例如“decoded.png”、“decoded.txt”(对应 text/plain 类型)或“decoded.bin”(当未指定类型时)。按钮下方的行会显示文件名、文件大小和文件类型。
按钮下方的文字如果数据 URI 无法读取,或者 Base64 编码中包含 A–Z、a–z、0–9、+ 和 / 以外的字符,则按钮下方会显示一条提示信息,而非进行下载。
数据保留在本地编码使用浏览器的 FileReader,解码在内存中生成文件,因此本工具不会把文件或粘贴的文本发送到任何地方。

更多示例

RFC 4648 测试文本

输入
A text file foobar.txt that contains only the six letters foobar, with no line break
结果

data:text/plain;base64,Zm9vYmFy,以及一行 Original: 0.0 KB | Base64: 0.0 KB (33% overhead)。Zm9vYmFy 是 RFC 4648 公布的 foobar 测试向量。

解码一段短文本

输入
data:text/plain;base64,Zm9vYg==
结果

“解码并下载”会保存一个名为 decoded.txt 的 4 字节文件,其中包含文本 foob,而按钮下方的行则标明了文件名、文件大小以及类型 text/plain。

扩展名不寻常的 SVG 图片

输入
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLz4=
结果

浏览器保存一个名为 decoded.svg+xml、41 字节的空白 SVG 图片。如果想查看,请将其重命名为 .svg。

常见问题解答

它生成什么?

格式为 data:type;base64,data 的数据 URI,其中 type 采用浏览器为该文件报告的 MIME 类型(如果未报告,则为 application/octet-stream)。Base64 编码会使数据体积增加约三分之一,而且这是一种任何人都能逆向解码的编码方式,并非加密。

《Decode & Download》可以读取哪些数据 URI?

Base64 数据 URI(例如 data:image/png;base64,... 或 data:text/plain;charset=utf-8;base64,...),包括含有换行符或 URL 安全字符的,以及未包含 ;base64; 的百分比编码格式 其他情况会在按钮下方显示提示信息。从钓鱼邮件附件中解码的文件可能具有危害性,因此在打开前请使用“File Type Sniffer”进行检查。

文件会被上传吗?

不。该文件是通过 FileReader API 读取的,数据 URI 是在本页面上生成的;并未上传任何内容。仅转换大小不超过 50 MB 的文件,因为更大的数据 URI 可能会导致标签页卡死。

为什么钓鱼邮件或页面中会有很长的 data:... 字符串?

HTML 附件和钓鱼页面经常把徽标、字体、脚本甚至整个文件以 Base64 data URI 的形式嵌入。这样内容就随页面一起传输,而不是从单独的地址加载。在这里解码该字符串,可以在不打开原始页面的情况下看到其中隐藏的内容。

可以解码没有 data: 前缀的普通 Base64 吗?

是的,如果你添加一个的话。在字符串前面加上 data:application/octet-stream;base64,然后点击“解码并下载”,你就会得到一个名为 decoded.bin 的文件。对于短文本,Base64 编码器/解码器会更快。

为什么小文件的额外开销超过 33%?

Base64 把每 3 个字节转换为 4 个字符,并用 = 号填充最后一组。对于只有几个字节的文件,填充所占比例很大,因此 1 字节的文件显示 300%。从几 KB 起,该数值会保持在 33% 左右。

打开从可疑消息中解码出的 SVG 或 HTML 文件安全吗?

在你日常使用的浏览器中不安全。SVG 和 HTML 文件可能包含打开时就会运行的脚本和链接。请先查看文件类型和哈希,并且只在沙箱或单独的分析机器中打开此类文件。

术语说明

PhishDestroy 研究