⭐️引言⭐️

二维码已经成为我们日常生活中必不可少的组成部分了,登录需要扫一扫二维码、买东西付钱需要扫一扫二维码、开会签到也需要扫一扫二维码,那么如此使用的二维码技术,背后的原理是怎样的呢?本文将结合二维码的发展历程以及典型应用场景,分析二维码背后的技术原理。

⭐️二维码发展简史⭐️

条形码的诞生

在理解二维码技术原理之前,我们先来简单看下它是怎么发展起来的。早在1948年,伯纳德·塞尔沃还是费城煤气科技学院的一名研究生,在一次偶然的机会他得知当地的一家超市的老板想要院长帮忙设计一种可以扫描商品价格的装置,用以提高超市内货品销售的效率。因为超市里的收银员在结算货品的时候每次都需要手动输入架构,超时客流量达的时候,收银员结算效率十分低下。但是院长觉得这是一件非常不容易做到的事情。

然而伯纳德·塞尔沃与他的朋友约瑟夫·伍德兰德却觉得这是一个巨大的商机,决定要好好设计做出个可以商用的产品出来。在尝试了紫外线照射石墨发光的方案、盲点系统以及点线符号系统等方案之后,由于当时的技术限制,都没有得到广泛的应用。

转眼时间来到了20世纪60年代,伍德兰德始终没有放弃当年那么没有实现商业化应用的金点子。此时他已经是IBM的一位工程师了,在公司期间,他不断阐述自己关于条形码的技术实现想法,同事不断强调条形码的商业价值。与此同时,激光以及计算机已经开始应用起来,条形码实现的技术基础已经完成。大概在1969年,伍德兰德参与到IBM公司投入的由乔治·劳雷尔负责的超市扫描仪和标签研究项目组中,经过几年的潜心研究,IBM终于推出了可识别的条形码。

在1974年6月26日的这一天,世界上第一个条形码扫描器被安装在俄亥俄州特洛伊的马什超市里。第一件被扫描的商品是10包箭牌的多汁水果味口香糖,这包口香糖如今已被美国历史博物馆收藏 。而后,条形码被广泛应用于商品、书籍、邮政等系统中,极大地提升了业务运行效率。

我们可以看得出来推动技术进步的往往都是现实生活中的业务需求。但是随着条形码的广泛用,它的不足之处逐渐显现出来,

1、条形码的数据表示内容非常有限,只能表示数字以及字母,无法表示更多的其他字符信息;

2、条形码表示的数据量也非常有限,如果想要包含更多的数据只能不断的进行水平拉伸,导致条形码越来越大,不利于商用;

3、条形码如果出现变形或者条形丢失就会造成数据的不可获取,影响业务的正常使用;

正因为条形码存在着这样以及那样的不足之处,人们对于出现有一种可以表达更多信息的的期望与日俱增。

二维码的横空出世

虽然二维码的应用在中国大放异彩,但是实际上它是日本人发明的。日本 Denso Wave 公司(日本电装株式会社(Denso Corporation)旗下的子公司)的腾弘原是二维码的发明者。在公司的业务中需要对汽车的零部件标注属性信息,包括产地、生产时间、生产批次等等信息,传统的条形码无法满足大量信息的标注,因此需要一种涵盖更加多信息的标注方式。

腾弘原想到既然一维的条形码没办法表达更多消息,那么是不是可以增加维度来让其表示更多的信息,这就是二维码的思考雏形。但是紧接着又遇到了如何让这个二维码能够实现高速的读取。技术攻关小组利用正方形的四个角中的三个来作为定位符,然后通过剩余的一个角来判断实际二维码的方向,从而达到无论是从什么方向进行扫描,都不影响二维码内容的读取。

经过几年的反复测试,腾弘原的攻关小组终于攻克技术难关,这个小小的方块二维码在信息存储上相比条形码提升了300倍,而在二维码的识别速度上提升了10倍。在1994年,DENSO WAVE公司面向全日本开始推广二维码技术,并将其命名为“Quick Response Code”。时至今日,二维码已经在全世界范围内得到广泛应用,尤其是在中国可以说是发挥到了极致。

技术原理

在网上我们可以轻松找到在线制作二维码的工具网站,这些网站中,可以转化为二维码的信息包含了,文本、URL、图片以及音视频等等。由此可知二维码的本质实际就是一种数据信息的表现方式。

二维码实际上是由于白色方块以及黑色方块组成,实际上就是对应计算机世界中的0-1二进制语言。其中黑色小方块代表1,白色小方块代表0。因此实际上黑白方块的二维码组合在一起就是0-1组成的信息组合。而0-1组成的二进制数据实现对于信息的编码,也是计算机可以看懂的语言。

(图片来源于网络)

手机进行二维码扫描的时候,由于二维码是黑白相间的二位点阵,通过光的反射进入手机摄像头时候,手机中的CMOS感光元件将接收到的光信号转化为电信号,而二维码代表的0-1组合实际在手机中就是对应的高低电位,最终解析为二维码对应的标注信息。

⭐️典型应用---扫码登录⭐️

扫码登录是二维码非常典型的应用场景,以前我们登录网站需要输入用户名以及密码,有时候还为一时想不起来密码是多少而非常着急。自从有了二维码登录之后,只要拿出手机扫一扫web端的二维码就可以完成登录操作非常方便,那我们就来分析下二维码扫描登录的技术原理是怎样的吧。

对于登录这件事情来说,其本质实际包含了两件事情,第一件事情是告诉平台你是谁,第二件事情是向平台证明你就是你不是别人。那传统的用户名以及密码登录的方式,用户名实际就是告诉平台你是谁,而密码就是向平台证明你就是你。那么放在二维码扫码登录的场景下,实际也是需要完成这两件事情的支撑。下面我们分析下客户端扫码登录扫码登录的实现机制。

客户端扫码登录

我们在客户端登录的时候,需要输入用户名以及密码信息,此后的客户端与服务端的交互过程大致如下所示:

1、首先用户在客户端输入用户名以及密码进行登录操作;

2、客户端携带用户名、密码以及设备信息向服务端发起登录请求;

3、服务端校验用户名以及密码信息,同时将账号信息与设备信息进行绑定,并返回token信息;

4、客户端保存token信息;

5、再次登录的时候不需要再传递用户名以及密码,将token信息以及设备信息传递给服务端,服务端校验token以及设备信息;

这里的token信息实际就是代替了账号以及密码信息,可以理解为一种数据结构存储了账号、设备等信息,用以后期的服务端校验。

上面所说的是客户端登录的大致步骤,它是客户端扫码登录的基础,接下来我们再看下扫码登录的大致业务流程,如下所示:

在这个过程中最重要的是生成临时的token,这个临时token实际就是一种登录的凭证,并且与二维码一一对应,用过一次就会失效。那为什么要有这个临时的token呢?实际是为了解决扫码这个动作与登录的连接关系,系统需要确认二维码是被客户端扫描后进行的登录操作。

微信第三方扫码登录

所谓微信第三方扫码登录指的是登录CSDN,但是使用的是微信账号进行登录,实际上就是用微信的账号信息来当做CSDN账号信息使用。它上上述的客户端登录的最大不同就在于多了和微信开放平台的交互。通过从微信开放平台获取用户的头像、用户名等信息。

⭐️总结⭐️

本文主要结合了二维码的技术发展历程,阐述了二维码的技术原理,同时对二维码典型的应用场景进行了技术原理的分析,相信通过本文大家对于二维码的原理有了更加深刻的理解。

每天都扫的二维码,你知道它的技术原理吗?相关推荐

  1. 每天都扫的二维码,你知道它的技术原理吗? 每天都扫的二维码,你知道它的技术原理吗?...

    引言 二维码已经成为我们日常生活中必不可少的组成部分了,登录需要扫一扫二维码.买东西付钱需要扫一扫二维码.开会签到也需要扫一扫二维码,那么如此广泛使用的二维码技术,背后的原理是怎样的呢?本文将结合二维 ...

  2. 学生交作业,现在都流行用二维码了

    因为疫情影响,加之二维码应用的普及,学生们使用二维码来交作业已经是非常普遍的现象了.作为重要的内容传播媒介,二维码不仅能直接连接至网址,还能够同时展示多个文件.图片.文章.视频.音频. 下面我们就来详 ...

  3. 微信小程序扫普通二维码跳转

    最近一需求,是要做小程序扫普通二维码跳转.看了看微信文档一头雾水,写的不是很清楚. 官方文档传送门:https://developers.weixin.qq.com/miniprogram/intro ...

  4. 能吃还能扫,二维码汉堡了解一下

    二维码是日本的Denso Wave公司为了追踪汽车零件而设计的,距今已经有20多年的历史. 现如今大家可以在任何地方看到二维码,怎样要在普遍的事物中挖掘新意,让人们在掏出手机扫码的一瞬间获得惊喜,世界 ...

  5. 用STM32实现:摄像头扫到二维码后提取二维码中的信息分别放到数组中

    摄像头扫到二维码后提取二维码中的信息分别放到数组中 把想要的信息编辑好放到二维码中(网上有好多在线生成二维码的工具) /** *作者:魏波 *时间:2017.6.6 * **/char name[6] ...

  6. uni-app微信小程序扫普通二维码分享小程序

    这里需要扫普通二维码分享的话就需要先产生二维码了 文档:https://github.com/yingye/weapp-qrcode 1.绘制二维码 我这里使用的是资源是weapp.qrcode.es ...

  7. 苹果手机QQ扫正常二维码404

    问题记录:苹果手机QQ扫正常二维码404,其他手机及应用扫描正常 二维码信息中包含中文,将中文转码即可 c# http的url编解码类 System.Web.HttpUtility.UrlEncode ...

  8. C++/QT生成二维码和扫瞄二维码

    C++生成二维码和扫瞄二维码 一. 创建工程项目 二 .QRCODE库 三. 添加生成二维码库 四. 生成二维码和复制二维码实现 五. 添加扫码二维码库 六. 扫码二维码代码实现 七. 测试 八. 打 ...

  9. 扫普通二维码进入小程序、链接进入小程序

    目录 一.扫普通二维码进入小程序 1.扫码进入小程序管理页 2.点击开发管理-开发设置-扫普通链接二维码打开小程序-添加 3. 完善配置内容 二. 前端获取参数 三.开发本地调试 一.扫普通二维码进入 ...

最新文章

  1. Emojify - v2 吴恩达老师深度学习第五课第二周编程作业2
  2. 遍历python字典的几种方法
  3. Java数组在内存中是如何存放的
  4. JS实现倒计时三秒钟跳转到新的页面
  5. lua执行shell命令6_tolua_runtime 集成 lua-protobuf 第三方pb3解析库
  6. mybatis-逻辑翻页
  7. [New Portal]Windows Azure Web Site (4) Web Site Gallery
  8. mysql test数据库_mysql数据库test
  9. c语言2阶数组指针,C语言的指针(进阶篇章之二)
  10. 针对xml文件做提取与写入的操作
  11. vim 基础命令大全
  12. 浙江大学_包家立计算生物学_神经网络
  13. AOP:静态代理实现方式①通过继承②通过接口
  14. LIstView和TreeView相关联
  15. win10下安装Mapx5.0进行MFC开发的方法
  16. 张鑫旭的《CSS世界》读后笔记
  17. [Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
  18. excel多表数据自动关联
  19. python rasterio库和gdal库匹配与冲突问题安装办法
  20. 仿雷电——飞机大战类游戏Ⅰ

热门文章

  1. Linux终止当前命令
  2. 嘉定学计算机编程,嘉定附近儿童学编程费用
  3. 一种通用嵌入式LCD页面切换方法
  4. Linux内核抢占和进程调度
  5. Matplotlib绘图快速入门
  6. 动态线程池dynamic-tp快速接入
  7. win7 凭据管理 永久性-企业 和 永久性-登录会话
  8. webgl之Three.js学习 day10定制着色器和渲染后期处理
  9. jsp内置对象--request对象
  10. 全球及中国催化剂二氧化碳变送器行业研究及十四五规划分析报告