birdyee/BirdyHide
GitHub: birdyee/BirdyHide
Stars: 1 | Forks: 2
# BirdyHide — 离线隐写与加密工具箱
将任意文件加密后藏入图片,外观无异常,取回时需密码。完全运行在您的浏览器中,不上传任何数据,关闭页面即销毁所有痕迹。
**在线体验地址**(GitHub Pages 已上线):
https://birdyee.github.io/BirdyHide/
## 为什么选择 BirdyHide?
- 军事级加密:内核使用 AES-256-GCM 认证加密,密钥通过 PBKDF2 派生(迭代次数可选 25 万 ~ 100 万次),即使图片被公开,没有密码也无法解密。
- 任意文件类型:支持文档、压缩包、音视频、可执行文件等,且可一次性打包多个文件,解密后逐一下载或一键打包下载。
- 三种隐写模式:经典模式(适合日常使用,将加密后的数据放入 PNG/JPEG 的元数据或文件末尾);像素隐写(实验室)提供普通 LSB(1/2/4 位/通道)、自适应 LSB(高纹理区嵌入,抗 RS 检测)、多图分卷(超大文件分散到多张 PNG 中)以及散布模式(数据随机分布,增强隐蔽性)。
- 隐私优先:密码仅在内存中使用,离开页面后立即清除;复制密码后 30 秒自动清空剪贴板;所有中间缓冲区使用后随机覆写。
- 完全离线:单 HTML 文件,无需网络,不收集任何统计数据,不依赖第三方服务器。
- 移动端友好:触摸优化,支持 Android/iOS 浏览器,并提供下载链接兼容层解决部分定制浏览器无法下载 blob 文件的问题。
## 快速上手
### 1. 获取工具
直接下载 index.html 文件到本地,双击用浏览器打开(推荐 Chrome / Edge / Firefox 最新版)。
### 2. 藏入文件(加密 + 隐写)
1. 点击“藏入文件”卡片(默认已选中)。
2. 选择一张封面图片(强烈建议使用 PNG 格式,避免数据损坏风险)。
3. 点击“要隐藏的文件”区域,选择一个或多个任意文件(可重复添加,解密时会自动打包)。
4. 设置密码(至少 4 位),可点击“随机生成”获得 20 位强密码。
5. (可选)调整加密强度:高强度(100 万次迭代)更安全但稍慢;标准(50 万次)为默认平衡。
6. 点击“开始加密”,等待处理完成,最后点击下载按钮保存隐写图片。
### 3. 取出文件(解密 + 提取)
1. 切换到“取出文件”卡片。
2. 上传之前生成的隐写图片(PNG 或 JPEG)。
3. 输入加密时使用的密码。
4. 点击“开始解密”,工具会验证密码并还原文件,然后提供下载链接(若为多个文件,会列出所有文件并支持一键打包 ZIP)。
### 4. 高级功能(像素隐写实验室)
如果您需要更大的隐藏容量或更强的抗检测能力,可以进入“像素隐写”卡片。上传多张载体图片(PNG 或 JPG,JPG 会自动转为 PNG),然后选择秘密文件。调整写入精度(1 位最隐蔽,4 位容量最大),并根据需要开启自适应阈值、散布模式、预压缩等高级选项。系统会自动估算容量并选择最合适的策略。提取时只需将所有输出图片(或 ZIP 包)上传到“取出文件”区域,输入密码即可还原。
提示:经典模式与像素隐写模式相互独立,用哪种方式藏入,就必须用哪种方式取出。
## 安全与隐私保障
- 内存安全:所有明文、密钥、中间缓冲区在使用后立即执行“随机覆盖 + 全零”两步擦除。
- 剪贴板保护:复制生成的密码后,30 秒自动清空剪贴板(写入空格)。
- 页面失焦模糊:切换到其他标签页时,敏感内容自动模糊,防止旁观者窥视。
- 静止超时锁屏:10 分钟无任何操作,自动隐藏内容(点击任意位置恢复)。
- 离开页面清场:刷新或关闭浏览器前,自动清空所有密码字段、吊销下载链接、释放 Blob URL。
- 防 iframe 劫持:检测到页面被嵌入 iframe 时,强制跳出并显示警告。
- 错误消息脱敏:所有异常输出过滤路径分隔符并截断长度,避免泄露文件系统信息。
- 无后门承诺:本工具不包含任何远程控制、数据回传、主动联网功能,所有运算均在本地完成。
## 法律与责任声明
本工具仅限合法的隐私保护、安全研究、教育用途。使用者须严格遵守所在地法律法规,严禁用于隐藏非法信息、侵犯他人权益或逃避法律监管。开发者不承担因滥用本工具而产生的任何直接或间接责任。工具内置完整的免责声明(首次打开时需滚动阅读并同意),请在使用前仔细阅读。
## 浏览器兼容性
- Chrome / Edge (90+):完全支持,推荐使用。
- Firefox (110+):完全支持,需要较新版本以支持 CompressionStream。
- Safari (15+):大部分功能正常,PNG 隐写需较新版本,部分旧版可能无法处理大文件。
- 其他 WebView(Android 微信等):基本可用,已针对 blob 下载做兼容处理,但大文件可能受限。
如果您的浏览器不支持 CompressionStream,经典模式中的 PNG 隐写将不可用,您可以选择 JPEG 封面并勾选“保持 JPEG 格式”(风险较高),或升级浏览器。
## 项目结构
index.html 单文件应用,包含所有 HTML/CSS/JS
无需安装、无需构建、无需任何依赖。代码体积约 1 MB(含大量安全注释和功能实现),下载后即可运行。
## 常见问题
问:为什么强烈推荐使用 PNG 封面?
答:JPEG 是有损压缩格式,任何重新保存(如微信发送、相册备份)都可能破坏隐写数据,导致无法解密。PNG 无损,能完美保留数据。
问:多图分卷提取时提示“分卷不完整”?
答:请确保您上传了该批次生成的全部 PNG 文件(可多次点击“选择文件”累加),缺一张都无法重组数据。
问:密码忘记了怎么办?
答:密码是唯一解密凭证,无法找回。请务必妥善保管。
问:工具会上传我的文件到服务器吗?
答:绝对不会。所有操作都在您本机的浏览器中完成,您甚至可以断开网络后使用。
问:可以商用吗?
答:本项目采用 MIT 许可证,允许您自由使用、修改和分发,但请遵守许可证条款并自行承担相关法律责任。
## 贡献与反馈
本项目欢迎 Issue 和 Pull Request。如果您发现了安全漏洞或功能缺陷,请通过 GitHub 的 Issues 板块提交(请勿通过邮件或其他私人方式,以保障透明性)。提交前请确保您已阅读并理解工具的免责声明。对于新增功能的建议,请提供清晰的使用场景描述。
## 许可证
Copyright (c) 2026 Birdy
详见 LICENSE 文件。
## 致谢
感谢 Web Crypto API 为浏览器提供了原生加密能力。感谢所有测试者和贡献者,让 BirdyHide 不断进化。
BirdyHide – 让隐私保护不留痕迹。完全离线 · 随时可用 · 你掌控一切。
标签:后端开发