二维码说白了是个"不用手抄的传送门":把一段文字按固定规则翻译成黑白格子,手机摄像头拍下来,再按同样的规则翻译回文字。 这里讲的是最常见的QR码。格子只是包装,里面装的东西很普通,最常见的就是一个网址。
比如在餐馆扫桌上的码点菜。扫完跳到点菜页面——那个页面其实有个普通网址,和你自己把 shop.example.com/order?table=12 敲进地址栏,去的是同一个地方。二维码替你完成的就是"看准网址、一字不差地输进手机"这一步,快,而且不会抄错。加好友的码、WiFi 分享的码、快递柜取件的码,干的都是这件事:替你把一段文字搬进手机。
格子只是包装,扫码还原内容
- 01编码
文字变为QR图案
- 02解码
相机读出文字
图案为不可扫描的结构示意;纠错不代表能随意遮挡三成面积。
拆开看,黑白格子在干什么
1. 内容先变成 0 和 1。 和手机里所有数据一样,文字先被翻译成一长串 0 和 1,然后黑格代表 1、白格代表 0,按规定的顺序一格一格填进方阵。扫码就是倒着来一遍:读出这盘格子,还原成 0 和 1,再翻译回文字。
2. 三个角的"回"字是定位标记。 随便找个二维码看,三个角上都有个大的"回"形方块,第四个角没有。手机靠这三个标记判断:码在哪个位置、是正是歪、格子大概多大。所以你斜着拍、倒着拍,一般也能认出来。
3. 生成时故意多存了"备份",缺一块也能读。 二维码在生成时会额外算一批"纠错数据"填进去。图案弄脏了、磨掉一角,手机能靠剩下的部分把完整内容推算出来。纠错能力分四档,最高档能恢复约三成码字的数据错误——这里的码字是一组组编码数据,不是随便遮住三成图案面积。中间放logo要留足余量,定位标记等关键部位更不能随意遮住。
4. 格子越多,装得越多。 最小的二维码是 21×21 个格子,能装多少字符还要看字符类型和纠错等级;最大可以到 177×177 个格子,纯数字能装下约七千个。代价是内容越多格子越密,印刷小了、光线差了就越难扫。
这东西本来是用来数汽车零件的
二维码(QR Code)是 1994 年日本一家汽车零件公司的工程师发明的,最初是给工厂追踪零件用的——传统条形码只能装二十来个字符,不够用,才有了这种方格子版本。后来它的标准免费开放、谁都能用,才从工厂走进付款码和餐厅菜单。所以"二维码"这个名字的重点在"二维":条形码只在横向上存信息,它横竖两个方向都在存,同样面积装得多得多。
扫之前看不见内容,风险都藏在这
二维码有个天生的麻烦:它是一坨格子,你扫之前没法像读网址那样先读一遍,判断它可不可靠。 而且它只负责"翻译",不挑内容——能装网址、名片,也能装钓鱼链接。
所以记住一个区分:二维码是编码(按公开规则翻译,谁都能译回来),不是加密(没有钥匙读不出来)。它没有任何保密性,任何人一分钟就能生成一个。常见的坑有两类:
- 覆盖码:共享单车车身上、餐馆桌上的真码,被人贴了一层假码。扫了可能进钓鱼页面,或替陌生人付了款。
- 来路不明的码:传单上"扫码领礼品"、群里"扫码领红包",扫出来的页面要验证码、要银行卡号的,基本可以关掉。
稳妥做法很简单:扫完别急着操作,先看一眼手机显示的网址是不是你以为的那家;凡是涉及付钱和填密码的页面,多核对一遍再动手。
付款码和收款码,一字之差
日常最容易搞混的是这两个码,钱的方向正好相反:
- 收款码:别人扫它,钱付给你。常见的摊位收款码是固定的(静态码),商家也能为单笔订单生成收款码,打印出来贴在摊位上也不怕——它本身不是从你账户扣款的授权。
- 付款码:你出示给收银员扫,相当于当面授权"从我账户扣钱"。它是动态码,通常会定时刷新,具体有效期由支付平台决定;但在有效期内,泄露它可能让人冒用扣款,是否成功还受平台验证和风控影响。
所以"客服让你把付款码截图发过去"是典型骗局:那张截图在失效前就是一张扣款许可证。一句话记住:收款码可以随便给人,付款码只当面出示给收银员。