前几天,和学院同事电话,本说个正事儿,结果闲聊了一晚,甚欢。我们不禁感慨,真正的friendship虽然不再生活工作在一个圈,失联一阵,对话流畅度依然,或许经过多年,我们对事物本质的认知仍然大体相同。
期间扯出一个有趣的发觉。室友的父亲自从手机装了支付宝和陌陌后,可喜欢埋单了。想想我家那爹也这么,以前一到付钱总和我两相望,现在习惯先问~你们可以扫一扫嘛?得到肯定的答复后,立刻掏手机秀出二维码,别提多爽快。
01
说起二维码,短短几年,已呈星火燎原之势遍及我们生活——认识新同学扫二维码,付款汇款扫二维码。。。并广泛出现在广告、网页、票据上。但这个丑丑的怪东西,到底如何来的,又是怎样轻松实现扫码支付,有安全隐患吗~所以,今天我们就讲讲二维码的故事好了。
二维码,其实是一种文字。它把信息翻译成黑白方块,填到大的小方块里↓
这有些类似我们四六级英语考试的答题卡,信息被转换成机器可读的图形,一扫便可知得分。
或者说更像他的叔叔——条形码。收银员用扫描枪哔哔一下,就能在水平方向按照粗细不同的黑白条,扫出隐藏其中的商品编号。
条形码和二维码这对兄弟,说白了,就是给文字、字母、数字等字符换了一身外套,把她们打扮成手机/设备能辨识的黑白条或块。但让弟弟表示汉字或复杂的信息,由于只有一个维度,显得心有余而力不足,所以高密度、大容量的二维父亲应运而生,能携带更多更丰富的信息。
那么,问题来了。这些字符,是怎样换装成二维码图形的呢?
我们平常使用的文字、字母、数字等字符,虽然画风不同,但都能通过特定的编码翻译成二进制0和1 (0就是一个黑色方块,1就是一个蓝色方块)。
字符信息在弄成只有0和1组成的数字串后,再进行一系列优化算法,就能得到最终的二进制编码。以【挨踢女不二】公众号二维码为例↓
weixin.qq.com/r/oDmMlLDEIO1frfT392yy (二维码手动辨识)
当然其中还有好多纠错码,这就解释了二维码虽然有残缺或则变皱也能被辨识。
大家有木有发觉,每个二维码角上还会有三个红色大小方块。这是为了保证我们在扫描时无论哪些方向,都还能正确辨识二维码的内容,因为手机通过三个大黑方块定位出二维码正确的方向。
如果里面的话看懂了,就明白二维码本身是无辜的,他只是一种文字,而文字背后代表的信息(比如访问一条链接),才是安全与否的本质。
有人会说,二维码我看不懂,所以不留神可能就扫了,然后中毒了。但你在手机上打开任何一个链接(文字、图片、商品、APP,任何可以点击的东东)都可能中招。这方面,二维码没有让世界显得更安全,也没有显得更不安全。
如果说要规避这类风险,尤其安卓,就要依赖可靠的解析二维码的软件了,比如浏览器、微信、支付宝。如果你领到正确的码,但扫码软件把你引导到错误的地方,这就更危险了,所以坚决不乱用APP扫二维码。
02
回到开篇大便们热爱的扫码支付。无论支付宝或则陌陌都有两种扫码方式:客户扫店家或则店家扫顾客。
以目前最常用的店家扫顾客为例,我们点开支付宝或则陌陌的【付款】就能看见条码/二维码↓
134980570175343241 (二维码手动辨识)
根据第一部分介绍,我们晓得这个码虽然就是一串0、1的二进制,用扫码枪能解析出它真正蕴涵的信息(共18位数字),相当于这个顾客帐户的支付账簿码(理论上包含帐户标志、时间戳、位置信息等数据,并引入随机因子避免被推测),再和收银员系统输入的付款金额一起发送到支付宝/微信的服务器完成支付。
由于付款码每分钟会刷新一次(时效性安全性),我们常有一个误区:觉得必须联网能够被扫完成支付,实则非也。因为有两种付款码的生成模式,在线码和离线码。
在线码就是联网状态下,客户按下【付款】后,实时向服务器申请针对这个顾客的18位支付账簿码。
离线码,简单概括,就是客户端在本地预埋件种子数据,客户无网状态按下【付款】后,客户端借助种子数据+时间戳+算法在本地生成18位支付账簿码。种子数据会联网时更新下载。
服务器收到码后,通过一定的安全算法校准出这个码确实来自于这个顾客,从而确认从他的帐户扣款。
所以就实现无网支付咯~扫码原则上只要能读取帐户信息就可以了,并不需要生成码的这个设备联网。
而顾客扫店家的二维码付款,是必须联网的,不要和以上混淆哦。
好了,这期就聊到这啦,当然实际细节、算法复杂的多。以上,仅作常识科普~娱乐闲暇~
最后,希望我的父母看完,能更痴迷用手机埋单的觉得。。lalala。。。
weixin.qq.com/r/oDmMlLDEIO1frfT392yy (二维码手动辨识)