QR 码图案中隐藏的技术
QR 码 (Quick Response Code,快速响应码) 是 1994 年由电装 Wave 公司的原昌宏开发的二维条码。最初为汽车零部件库存管理而设计,随着智能手机的普及,QR 码已在支付、URL 分享、门票、名片交换等日常场景中无处不在。
那些黑白图案看似随机,实际上有着精密设计的结构。
QR 码的结构 - 三个地标
QR 码最显著的特征是三个角落的大方形图案 (定位图案)。
- 定位图案:位于左上、右上和左下角。这些地标使摄像头能够瞬间检测 QR 码的位置、方向和倾斜度。从任何角度都能读取,因为这三个点建立了坐标系
- 校正图案:较大的 QR 码中添加的小方块,用于畸变校正
- 定时图案:连接定位图案的黑白交替线条。用于精确定位模块 (点) 坐标的参考线
- 格式信息:记录纠错级别和掩码图案的区域
- 数据区域:存储实际数据的区域
第四个角 (右下) 没有定位图案,因为三个点就足以确定位置和方向,第四个角用作数据区域更为高效。
纠错 - 脏码也能读取的秘密
QR 码最大的特点之一是强大的纠错能力。使用 Reed-Solomon 码,即使 QR 码部分脏污或损坏也能恢复数据。
- L 级 (低):约 7% 损坏可恢复
- M 级 (中):约 15% 损坏可恢复
- Q 级 (四分之一):约 25% 损坏可恢复
- H 级 (高):约 30% 损坏可恢复
在 QR 码中央放置公司 Logo 后仍能扫描,正是得益于这种纠错能力。被 Logo 遮挡的数据通过纠错码恢复。但如果 Logo 超过纠错限制,码就无法读取,因此必须使用 H 级并将 Logo 控制在总面积的 30% 以内。
QR 码的安全风险
QR 码虽然方便,但也存在安全风险。
QR 码钓鱼 (Quishing)
在 QR 码中嵌入恶意 URL,将用户重定向到钓鱼网站的攻击。由于人类无法目视验证 QR 码内容,与直接输入 URL 相比,钓鱼更难被发现。
- 在合法 QR 码上粘贴假 QR 码的物理攻击
- 通过电子邮件或社交媒体发送假 QR 码的攻击
- 替换公共场所 QR 码的攻击
防范措施
- 扫描 QR 码后务必验证目标 URL
- 使用短链接时要格外小心
- 检查公共场所的 QR 码是否被覆盖粘贴
- 使用 IP 确认验证连接信息,检查是否被重定向到可疑网站
QR 码的容量
QR 码能存储的数据量因版本 (大小) 和纠错级别而异。最大版本 40 (177x177 模块)、纠错级别 L 时:
- 纯数字:最多 7,089 个字符
- 字母数字:最多 4,296 个字符
- 二进制:最多 2,953 字节
- 汉字:最多 1,817 个字符
反映了 QR 码的日本起源,汉字 (Shift_JIS) 的高效编码模式被作为标准内置。
为什么叫"Quick Response"?
QR 码中的"QR"代表 Quick Response (快速响应)。开发者原昌宏需要在工厂生产线上高速扫描零部件,因此设计了一种比传统一维条码读取更快的二维码。定位图案的布局经过优化,可以从任何角度瞬间检测位置。
电装 Wave 持有 QR 码的专利,但宣布不行使专利权,允许任何人免费生成和使用 QR 码。这种"开放"策略是 QR 码在全球普及的重要推动力。
总结
QR 码诞生于日本的汽车工厂,如今已渗透到全球的日常生活中。通过三个定位图案实现高速检测、使用 Reed-Solomon 码实现强大纠错、标准支持汉字编码,那些黑白图案背后蕴含着精心设计的理念。