离线二维码传输 — 免网络的安全文件与文本分享
一款纯浏览器端的离线传输工具:把文本、链接或文件编码成动态二维码在屏幕上播放,另一台设备用摄像头扫描即可还原。全程不联网、不登录、数据不上传任何服务器。发送前用口令做 AES-256 加密,即使屏幕被拍照也只是密文。适合无网络或物理隔离环境下分享敏感内容。
四种工作模式
同一页面内含四个模式,可任意切换发送端与接收端角色,实现双向传输:
- 文本发送:输入文本或链接,加密后编码为动态二维码循环播放,供接收端扫描。
- 文本接收:唤起摄像头扫描对方屏幕上的动态二维码,自动解密并还原文本。
- 文件发送:选择本地文件,加密后采用 LT 喷泉码分块编码为二维码动画。
- 文件接收:摄像头扫描编码动画,喷泉码允许部分丢帧仍可完整还原,解密后按原文件名下载。
加密与安全模型
发送端用口令经 PBKDF2(10 万次迭代)派生 AES-256-GCM 密钥,对载荷加密后再编码进二维码。接收端必须输入相同口令才能解密。因此:
- 二维码闪烁的是密文,被旁人拍照或录屏也无法还原明文;
- 口令不在任何地方传输或存储,仅用于本机密钥派生;
- 仍建议在可信的物理隔离环境使用,避免口令在旁被窥视。
技术实现要点
文本模式基于 @lo-fi/qr-data-sync 的动画二维码同步机制;文件模式基于 LT(Luby Transform)喷泉码,将数据分块并生成冗余编码帧,扫描端只要收集到足够多的帧即可还原,对少量丢帧有容错能力。两模式均为前端纯本地实现。
- 帧率:默认 10 fps,可在 5–20 之间调节;过高手机摄像头易丢帧。
- 文件上限:单文件 10 MB,超出会被拒绝。
- 分块:每帧约 800 字节,配合喷泉码冗余提升抗丢帧能力。
适用边界与建议
光学传输受摄像头采样率限制,更适合短文本、链接和较小的文件。对于大文件,微信、邮件或局域网传输通常更快。桌面端接收依赖摄像头解码,建议使用 Chrome 或 Edge;Firefox、Safari 的桌面摄像头二维码解码可能不稳定。
常见问题
需要联网吗?
不需要。所有编码、加密、解码、解密均在浏览器本地完成,不连接任何服务器,适合无网络或物理隔离环境。
数据放在二维码里安全吗?
发送前会用口令做 AES-256 加密,二维码中闪烁的是密文。没有正确口令无法还原内容,被拍照或录屏也只是密文。但仍建议在可信环境下操作,避免口令被旁人窥视。
传输速度大概多快?
文本模式适合短文本与链接;文件模式默认约 10 fps、单文件上限 10 MB,更适合小文件。大文件建议改用工信、邮件或局域网等网络方式,速度更快。
支持哪些浏览器?
Chrome 与 Edge 体验最佳。桌面端接收依赖摄像头二维码解码,Firefox、Safari 可能不稳定,页面会给出提示。移动端建议使用系统自带浏览器并授予摄像头权限。
文件大小有限制吗?
单文件上限为 10 MB。超出上限会选择文件时会被拒绝,建议大文件使用网络传输方式。
双向传输怎么操作?
任一设备选“发送”模式播放二维码动画,另一台设备选对应“接收”模式用摄像头扫描即可。两端角色可随时互换,实现互相传输。