不同的软件,不同的平台,是怎么保证生成的二维码都不雷同的?

NIC蓝色


要想了解为什么二维码可以存储那么多信息,或者拥有如此多排列可能,每天要生成那么多二维码,为什么不会有一模一样的生成呢!我们要先了解二维码的生成原理和工作方式。

二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。

二维码一共有40个尺寸。官方叫版本Version。Version 1是21 x 21的矩阵,Version 2是 25 x 25的矩阵,Version 3是29的尺寸,每增加一个version,就会增加4的尺寸,公式是:(V-1)*4 + 21(V是版本号) 最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的正方形。

简单来说,二维码组合方式多,生成的信息容量大不会影响使用。每个二维码承载的信息都是一个独特的信息,不会出现重复的情况。

所以不用担心二维码多重复的情况。

二维码是用某种特定的几何图案按照一定的规律在平面中分布的黑白相间的图形记录数据符号第一代条码技术,它是由一个二维码矩阵图形和一个二维码号以及下方的说明文字组成的,它具有信息量大、纠错能力强、识读速度快、全方面识读等特点,手机二维码是可以印刷在报纸、杂志、广告、图书包装等多种载体长,通过解码器也就是扫描软件解读其内容,通常这个内容是一个网址或者是一组数字或文字。

所谓的,二维码可以记录地球上的每一粒沙子,这句话,是真的!并不是夸大其实

修改一下,再仔细讲一讲!这次图文并茂的讲!

二维码就是把信息翻译成黑白小方块,然后填到这个大方块里。

这有点类似于中学考试中用的答题卡,就是把信息变成机器可扫描的图案,一秒钟就能知道你得了多少分。当然,二维码的原理和答题卡还不太一样,这个我们稍后会讲到。

我们先来介绍二维码的哥哥——条形码,也就是超市收银员扫的那个黑白条。电脑在水平方向上识别粗细不均的黑白条,就能找出藏在其中的商品编号信息。

相比于只在一个维度上携带信息的条形码, “二维码”在水平、垂直两个维度上,都携带了信息,也就做成了这个方块状的样子。

条形码和二维码这一对好兄弟,说白了,其实就是给数字、字母、符号等这些字符,换了一身衣服,把它们打扮成了能被手机相机识别的黑白条或块。

那么,最关键的问题来了,这些字符,到底是怎么变成这种二维码图案的呢?

这就要提到一个人类具有划时代意义的伟大发明:二进制。

我们平时使用的数字、字母、汉字等各种字符,虽然画风完全不同,但是机智的人类,发明了一个方法,使它们都可以被统一转换成由0和1组成的二进制数字序列。

这个转换的过程叫做编码。国际上有几套通用的编码规则,我们今天就用一个例子来感受一下,编码是怎么回事(字幕QR码通用编码规则 ISO18004)。

比如AB这个由两个英文字母组成的字符。

根据编码规则,每一个独立的英文字母都有唯一一个十进制数字与之对应(画表)。

而像AB这样的字符串,则要在对应数字的基础上再做运算。,

而运算结果再转化成二进制,就是这一串数字。

哦对了,整个计算机和互联网文明,都是建立在这种二进制编码上的。你现在看的这个视频,在你的手机里,其实也只是一串0和1而已。、

=======我是分割线==========

我们回到二维码的生成原理上。字符在变成只有0和1组成的数字序列后,再进行一系列优化算法,就得到了最终的二进制编码。

在最后这串编码中,一个0对应的就是一个白色小方块,一个1对应的就是一个黑色小方块,我们把这些小方块,按照8个一组,填进大方块里,这就是一个完整的,可以被手机相机识别的二维码图案了。

这就是二维码的基本原理了。


充电室


我在研究生期间恶补过一些关于二维码原理的论文,正好借这个问题的机会跟大家分享一下。题主所说的雷同,应该就是两个二维码中黑白小块大小、位置、数量完全一致的意思,先说结论:如果仅仅看外观,现实生活中是存在长相雷同的二维码的。

大家可能会疑惑了,二维码雷同,那不就“泄密”了吗?这里大家有个误区,把二维码当成了一种加密方法,属于随机生成的密钥,其实并不是,二维码只是原始信息的一种图形化表达,好比中文翻译成英文,只是把字符、中/日文字、数字等转译成了黑白方块的矩阵,其目的并不是防止别人识别。如果原始信息不同,那么生成的二维码自然不同,但是不同的原始信息,如果采用的编码方式有差异,是有可能产生雷同的二维码的。

题主的疑问可以分解为以下两点:

(1) 二维码有没有被人类用完的可能?

(2)有没有可能存在相同的二维码,但是其原始信息却不一样?

可能这也是很多朋友的疑问,全世界每天有很多人都在使用二维码,据估计可能一天产生的二维码就达上百亿,那么长此以往下去,二维码不就用完了吗?

万一哪天别人新生成的支付宝收款码正好是我之前用过的,那钱岂不是就转给我了?哈哈,我想说,你想得美。马云爸爸会允许吗?下面就我自己的理解,给大家讲讲其中的原理。

首先需要先补充一点二维码的知识,不感兴趣的朋友可以直接跳到文末解答疑问的部分。

二维码原理简介

通俗的讲,二维码就是使用某些特定几何图形按照一定规律排列从而达到记录符号信息的一种编码技术,编码的输入端是网址、电子名片、邮件地址等,输出端是二维的黑白方块矩阵。编码的码制有很多种,最常见的就是QR(Quick-Response) code,此外还有Data Matrix, Maxi Code等等。

典型的QR code如上图所示,主要分为功能图形编码区格式两大块,其中功能图形包括位置探测图形、位置探测图形分隔符、定位图形和校正图形

“三个位置相关的图形,用于对二维码的定位,对每个QR码来说,他们的位置都是固定存的,只是规格不同而已”

校正图形:与规格对应,一旦规格定下来,校正图形的数量和位置也就确定了

格式信息:这个代表二维码的纠错级别,二维码总共有为L、M、Q、H四种纠错等级,L最低,H最高,等级越高,二维码可被正确扫描的概率就越大,但同时二维码可携带的有效信息也会变少

版本信息:可以理解为二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本 每边增加4个模块

数据和纠错码:数据就是指真实编码后的内容,比如网址对应的黑白块,纠错字是为了纠正传输过程中丢失部分信息后,能正确解码用的,日常生活中二维码经常会被人为扭曲、磨损,此时纠错码就派上用场了。

二维码特点一:编码的数据容量量有限制

二维码对编码的数据容量是有限制的,你给我一本新华字典,我肯定是无法给你生成二维码的,因为新华字典字太多了,远远超出了二维码容许的数据上限。

上图是QR码可以容纳的数据容量表,可以看出,通过QR码制来生成二维码,最多容纳7089个数字或者4296个字母,如果是中文汉字,那么采用UTF-8编码的汉字最多可以容纳984个,差不多一个头条问答的字数。这样就从源头上保证了可以被转成二维码的信息是有限制的。

二维码特点二:二维码的编码是可逆的,原始信息和二维码一一对应

二维码的所有编码步骤都是可逆的,如果给我一个二维码,并且告诉我编码步骤中的参数设定,我一定可以把原始信息给解出来,这就从原理上保证了原始信息和二维码的一一对应关系。确实,二维码的“长相”是有限的,但是可用于编码的数据量也是有限的,而且二维码的数量是大于可编码信息的组合数量的,这也是保证原始信息和二维码一一对应的数学证据。

回答上面的两个问题

(1)二维码有没有被人类用完的可能?

答:问题本身不成立,这是错误的把二维码当成了凭空生成的密钥之类的东西了,实际上可用于生成二维码的数据量(数字、字幕、汉字、日文)就是有限的,并且小于二维码在数学上的数量上限,所以本身问题就不成立。

(2)有没有可能存在相同的二维码,但是其原始信息却不一样?

答:如果仅从“长相”上相同,即黑白块数量、大小、位置都一样,是有可能对应的原始信息不一样的,这是因为二维码的编码,是原始信息+纠错级别+编码类型(数字、字母、汉字 等)+版本信息四项因子一起构造的,两个不同的信息,比如www.baidu.com和“周杰伦”,如果选择的纠错级别、编码类型、二维码版本不一样,是可能生成“长相”完全一致的二维码的。如果两张“长相”一样的二维码,而且纠错级别、编码类型、版本信息也完全一致,那么逆推出的原始信息,一定是一样的。

衍生问题

有朋友可能会继续问,既然能被生成二维码的信息是有限的,那么总有一天所有组合都被人类用完了,这个时候肯定会出现重复的二维码,这个怎么保证安全呢?事实上,二维码除了以上维度以外,还有一个时间维度,二维码分静态二维码和动态二维码,静态二维码永远有效,而动态二维码则在一定时间内有效,比如支付宝的付款码,这有点像计算机中的HDCP动态分配IP地址技术,如果某个用户下线了,那么他的IP地址会分配给新上线的用户,这样就能保证一个局域网内的IP地址够用的,当然如果用户量达到上限,还是要新增IP地址范围的,这也是IPv6存在的主要原因。

结束语

时间关系,先解释这么多,应该可以解答题主的疑问了。以上信息主要信息来自于我研究生期间看过的几篇论文,是我个人的理解,如果有错误,欢迎指正。

我是科技民兵,一个有温度的科技作者,如果对于这个话题有想说的,可以在下面留言给我。


科技民兵


首先,二维码用黑白图形记录数据符号信息,这些图形按照一定的规则以一定的几何图形分布在一个平面(二维方向)上。在代码编译中,巧妙地利用了构成计算机内部逻辑基础的“0”和“1”的概念,并用与二进制相对应的几种几何形状来表示文字数字信息。自动信息处理可通过@ K 158390050输入装置或光电扫描装置自动读取来实现;它具有条形码技术的一些共同特点:每个编码系统都有自己特定的字符集。每个字符都有一定的宽度;它具有一定的检测功能等。同时,它还具有自动识别不同线条信息和处理图形旋转变化点的功能。

其次,二维码分为堆叠型和矩阵型。目前,矩阵类型是常用的,有几种矩阵类型,包括code one和qrcode。二维码现在有多达40个版本。这里的版本指的是不同的尺寸,从21*21模块到177*177模块,具有不同的尺寸和容量。但是,即使们的大小相同,生成的二维码也会因容错率不同而有所不同。

此外,二维码具有容错机制。当生成二维码时,将添加一些检查信息,以确保在图片识别度较低时仍然可以读取内容。这两张地图的支票信息比例不同,因此结果也不同。


科普有道


二维码由于结构,错误修正系数各项设定需注意.如无认识,就算输入内容不同也难保目视一样.何况用不同的软件制作的二维码.


分享到:


相關文章: