跳转至

QR code 生成器

什么时候用得上

把一串很长、很容易打错的东西交给眼前的人,而现场不方便用网络传:

  • onion 网址,五十六个字符的随机字符串,用念的会出错
  • Tor bridge,一行里有 IP、指纹与 cert,少一个字符就连不上
  • 临时的联络方式,例如一次性的 Matrix 房间

对方用相机对着屏幕就读走了,中间不经过任何服务器,也不留下消息记录。

QR code 里面是明文

这件事常被误会。QR code 不是加密,只是一种把文字画成方格的编码。任何拍到那张图的人都读得出内容,包括墙上的摄像头、对方手机的相册备份、你身后的人。

要传的东西如果本身敏感,先确认现场没有镜头,传完把画面关掉。真正需要保密的内容应该用端对端加密的通讯工具传,QR code 适合的是「公开但难打」的字符串。

纠错等级怎么选

QR code 有内建的纠错能力,弄脏或遮住一部分还读得出来。等级越高能修的越多,但同样的内容需要更大的图。

等级 可修复 适合
L 7% 屏幕上直接扫,画面干净
M 15% 一般用途,预设值
Q 25% 印出来、可能有折痕或脏污
H 30% 贴在户外,或中间要压一个图示

在屏幕上给人扫用 L 或 M 就够,图比较小、对方的相机也对得比较快。

下载成 SVG

「下载 SVG」会存成向量图档,放大不会糊,印出来也清楚。那个文件就在你的设备上,没有经过任何服务器。

要印在纸上或做成贴纸时,建议把纠错等级调到 Q 或 H,纸会折、会脏。

离线可用

跟这一区其他工具一样,程序存进设备之后没有网络也能用。把网络关掉试一次,它照样画得出来,那也表示你输入的内容不可能被送到任何地方。

要把这一页带着走,见离线阅读

编码用的是谁的程序

QR 编码交给 qrcode-generator(MIT 授权),原封不动放在 utils/vendor/ 底下。编码写错的典型后果是生成一个扫得出来但内容错的码,那比坏掉更糟,所以用成熟的实作而不是自己重写。

我们另外写了一个独立的解码器放在测试里,把生成出来的图读回文字再比对,所以「调用的方式对不对」有测试守着。那支测试在做的过程中抓到一个真的缺陷:函式库预设把字符串当 Latin-1 处理,中文会被截断成乱码。