WebCipherBox:浏览器端文件加密与伪装工具

⚡快速体验
📄 项目简介
WebCipherBox是一个完全在浏览器中运行的文件加密与伪装工具。
它允许你将多个文件或整个文件夹加密成一个独立的 .pack 文件,同时还可以选择一个“伪装”文件(如图片、文档)将其包裹,使得加密文件从表面看起来像是一个普通文件。
所有操作均在你的本地浏览器完成,文件不会上传至任何服务器,确保了隐私和安全。
✨ 主要功能
- 纯客户端运行:所有加密和解密操作都在你的浏览器中通过 JavaScript 完成,无需后端服务,你的文件永远不会离开你的设备。
- 文件与文件夹支持:支持拖拽或点选添加单个文件、多个文件甚至整个文件夹,并能在解密后完整保留原始的目录结构。
- 强大的加密算法:
- 使用
Web Crypto API实现,这是现代浏览器提供的标准加密接口。 - 通过
PBKDF2(100,000 次迭代和 SHA-256) 从你的密码中派生密钥。 - 使用
AES-256-GCM对文件内容和目录清单进行加密,提供了高安全性的认证加密。
- 使用
- 巧妙的文件伪装:在加密时,你可以选择一个正常文件(如
cat.jpg)作为伪装。工具会将你的加密数据附加到这个伪装文件后面。最终产物就是一张看似正常的图片,但它内部藏着你的加密数据,只有使用本工具和正确密码才能解密。 - 直观的用户界面:
- 加密/解密分离的选项卡设计,操作流程清晰。
- 实时文件列表预览,可以方便地移除待加密文件。
- 解密后以树状结构展示所有文件,支持单个下载或一键打包下载为
.zip。 - 支持浅色/深色模式切换。
🚀 使用指南
加密操作
密码安全提示
请务必记住你设置的密码。如果密码丢失,任何人都无法恢复你的文件。
- 添加文件:在 加密 选项卡下,通过拖拽或“选择文件/文件夹”按钮添加你想要加密的内容。旁边的面板会显示待加密的文件列表。
- 设置密码:输入一个安全的密码用于加密。如果留空,将使用默认密码
krkr.xyz。 - (可选)添加伪装:
- 勾选
添加伪装文件选项。 - 在展开的区域中,拖拽或选择一个用于伪装的文件(例如一张图片
image.png)。
- 勾选
- 执行加密:点击 加密 按钮。处理完成后,按钮会变为“完成!点击下载...”。
- 下载文件:点击按钮,即可下载最终的加密文件。如果使用了伪装,文件名将是你的伪装文件名(如
image.png);否则,它会被命名为encrypted_files.pack或根据你的文件夹结构智能命名。
解密操作
- 添加加密文件:切换到 解密 选项卡,添加你之前加密的
.pack文件或伪装文件。 - 输入密码:输入加密时使用的密码。
- 执行解密:点击 解密 按钮。
- 查看与下载:
- 解密成功后,旁边的面板会以目录树的形式展示所有恢复的文件。
- 如果原始文件包含伪装,伪装文件也会被分离并单独列出。
- 你可以点击每个文件右侧的下载按钮单独下载,或点击右上角的 下载全部 按钮将所有文件打包成一个
.zip文件下载。
🛠️ 技术细节
本工具生成的 .pack 数据包具有独特的结构,该结构是实现伪装功能的关键。
文件结构
一个完整的加密数据块(我们称之为 PACB 块)由以下部分顺序组成:
[魔法标记][盐][TOC IV][TOC 长度][加密TOC][载荷 IV][加密载荷]- 魔法标记 (Magic Marker):
PACB(4字节) - 一个固定的字节序列[80, 65, 67, 66],用于在解密时快速定位加密数据块的起始位置。 - 盐 (Salt): 16字节的随机数据,用于
PBKDF2密钥派生,确保即使密码相同,每次生成的加密密钥也不同。 - TOC IV: 12字节的随机初始化向量,用于
AES-GCM加密目录清单(TOC)。 - TOC 长度: 4字节的整数,指明了加密后的目录清单的长度。
- 加密TOC (Encrypted Table of Contents): 加密后的文件目录信息(JSON格式,包含每个文件的路径和大小)。
- 载荷 IV (Payload IV): 12字节的随机初始化向量,用于
AES-GCM加密实际的文件内容。 - 加密载荷 (Encrypted Payload): 所有文件被打包并加密后的二进制数据。
伪装机制
- 加密时:当你选择一个伪装文件(如
A.jpg)时,工具会先读取A.jpg的二进制内容,然后将上述的PACB块完整地附加在它的末尾,生成一个新的文件。这个新文件保留了A.jpg的文件名和原始数据,因此可以被正常查看。 - 解密时:工具会从文件的末尾开始反向搜索
PACB魔法标记。一旦找到,它就确定了加密数据块的起点。- 标记之前的数据,就是原始的伪装文件。
- 从标记开始到文件末尾的数据,就是加密块,可以按照上述结构进行解析和解密。
这种设计使得加密数据可以“寄生”在任何文件的尾部,从而实现了简单而有效的伪装。