【見多識廣】不同的軟件,不同的平臺,是怎么保證生成的二維碼都不雷同的?

專注于機械行業、專業、職業信息分享

 服務于制造業百萬工程師

推薦閱讀

【專業知識】螺栓基本擰緊技術,竟然有這么多學問,收藏!
【設計經驗】產品設計記得要把版本1-n都作備份,你們應該都懂得為什么!

【產品設計】鈑金設計常用的螺母形式有哪些?你用過幾種?

【工具使用】初中就開始學習的游標卡尺,你真的會用嗎

大家可能會疑惑了,二維碼雷同,那不就“泄密”了嗎?這里大家有個誤區,把二維碼當成了一種加密方法,屬于隨機生成的密鑰,其實并不是,二維碼只是原始信息的一種圖形化表達,好比中文翻譯成英文,只是把字符、中/日文字、數字等轉譯成了黑白方塊的矩陣,其目的并不是防止別人識別。如果原始信息不同,那么生成的二維碼自然不同,但是不同的原始信息,如果采用的碼方式有差異,是有可能產生雷同的二維碼的。

【見多識廣】不同的軟件,不同的平臺,是怎么保證生成的二維碼都不雷同的?的圖1

題主的疑問可以分解為以下兩點:

(1) 二維碼有沒有被人類用完的可能?

(2)有沒有可能存在相同的二維碼,但是其原始信息卻不一樣?

可能這也是很多朋友的疑問,全世界每天有很多人都在使用二維碼,據估計可能一天產生的二維碼就達上百億,那么長此以往下去,二維碼不就用完了嗎?萬一哪天別人新生成的支付寶收款碼正好是我之前用過的,那錢豈不是就轉給我了?哈哈,我想說,你想得美。馬云爸爸會允許嗎?下面就我自己的理解,給大家講講其中的原理。

首先需要先補充一點二維碼的知識,不感興趣的朋友可以直接跳到文末解答疑問的部分。

0 1
二維碼原理簡介


通俗的講,二維碼就是使用某些特定幾何圖形按照一定規律排列從而達到記錄符號信息的一種編碼技術,編碼的輸入端是網址、電子名片、郵件地址等,輸出端是二維的黑白方塊矩陣。編碼的碼制有很多種,最常見的就是QR(Quick-Response) code,此外還有Data Matrix, Maxi Code等等。

【見多識廣】不同的軟件,不同的平臺,是怎么保證生成的二維碼都不雷同的?的圖2

典型的QR code如上圖所示,主要分為功能圖形、編碼區格式兩大塊,其中功能圖形包括位置探測圖形、位置探測圖形分隔符、定位圖形和校正圖形

“三個位置相關的圖形,用于對二維碼的定位,對每個QR碼來說,他們的位置都是固定存的,只是規格不同而已”

【見多識廣】不同的軟件,不同的平臺,是怎么保證生成的二維碼都不雷同的?的圖3

校正圖形:與規格對應,一旦規格定下來,校正圖形的數量和位置也就確定了

格式信息:這個代表二維碼的糾錯級別,二維碼總共有為L、M、Q、H四種糾錯等級,L最低,H最高,等級越高,二維碼可被正確掃描的概率就越大,但同時二維碼可攜帶的有效信息也會變少

版本信息:可以理解為二維碼的規格,QR碼符號共有40種規格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號比前一版本 每邊增加4個模塊

數據和糾錯碼:數據就是指真實編碼后的內容,比如網址對應的黑白塊,糾錯字是為了糾正傳輸過程中丟失部分信息后,能正確解碼用的,日常生活中二維碼經常會被人為扭曲、磨損,此時糾錯碼就派上用場了。

二維碼特點一:編碼的數據容量量有限制

二維碼對編碼的數據容量是有限制的,你給我一本新華字典,我肯定是無法給你生成二維碼的,因為新華字典字太多了,遠遠超出了二維碼容許的數據上限。

【見多識廣】不同的軟件,不同的平臺,是怎么保證生成的二維碼都不雷同的?的圖4

上圖是QR碼可以容納的數據容量表,可以看出,通過QR碼制來生成二維碼,最多容納7089個數字或者4296個字母,如果是中文漢字,那么采用UTF-8編碼的漢字最多可以容納984個,差不多一個頭條問答的字數。這樣就從源頭上保證了可以被轉成二維碼的信息是有限制的。

二維碼特點二:二維碼的編碼是可逆的,原始信息和二維碼一一對應

二維碼的所有編碼步驟都是可逆的,如果給我一個二維碼,并且告訴我編碼步驟中的參數設定,我一定可以把原始信息給解出來,這就從原理上保證了原始信息和二維碼的一一對應關系。確實,二維碼的“長相”是有限的,但是可用于編碼的數據量也是有限的,而且二維碼的數量是大于可編碼信息的組合數量的,這也是保證原始信息和二維碼一一對應的數學證據。


0 2
回答上面的兩個問題



(1)二維碼有沒有被人類用完的可能?

答:問題本身不成立,這是錯誤的把二維碼當成了憑空生成的密鑰之類的東西了,實際上可用于生成二維碼的數據量(數字、字幕、漢字、日文)就是有限的,并且小于二維碼在數學上的數量上限,所以本身問題就不成立。

(2)有沒有可能存在相同的二維碼,但是其原始信息卻不一樣?

答:如果僅從“長相”上相同,即黑白塊數量、大小、位置都一樣,是有可能對應的原始信息不一樣的,這是因為二維碼的編碼,是原始信息+糾錯級別+編碼類型(數字、字母、漢字 等)+版本信息四項因子一起構造的,兩個不同的信息,比如www.baidu.com和“周杰倫”,如果選擇的糾錯級別、編碼類型、二維碼版本不一樣,是可能生成“長相”完全一致的二維碼的。如果兩張“長相”一樣的二維碼,而且糾錯級別、編碼類型、版本信息也完全一致,那么逆推出的原始信息,一定是一樣的。


0 3
衍生問題



有朋友可能會繼續問,既然能被生成二維碼的信息是有限的,那么總有一天所有組合都被人類用完了,這個時候肯定會出現重復的二維碼,這個怎么保證安全呢?事實上,二維碼除了以上維度以外,還有一個時間維度,二維碼分靜態二維碼和動態二維碼,靜態二維碼永遠有效,而動態二維碼則在一定時間內有效,比如支付寶的付款碼,這有點像計算機中的HDCP動態分配IP地址技術,如果某個用戶下線了,那么他的IP地址會分配給新上線的用戶,這樣就能保證一個局域網內的IP地址夠用的,當然如果用戶量達到上限,還是要新增IP地址范圍的,這也是IPv6存在的主要原因。

免責聲明:本文系網絡轉載,版權歸原作者所有。如涉及版權,請聯系刪除!文中內容僅代表作者個人觀點,轉載不同于本平臺認同或者持有相同觀點。

配套資料分享公眾號

今日分享資料:

1、【產品設計資料】非標自動化設計項目篇視頻教程1-12  打包下載

2、【產品設計資料】非標自動化設計項目篇視頻教程13-24  打包下載

3、【經典PPT下載】公差與配合培訓教材

4、【三維模型】F3標準輸送機3D模型

5、【三維模型】轉盤式自動鎖螺絲機

6、【機械類書籍】農業機械設計手冊(上下冊)

7、【結構類書籍】JG0010:家電數碼產品結構設計標準60頁

8、【工程軟件】ANSYS19.0軟件的安裝與下載

【見多識廣】不同的軟件,不同的平臺,是怎么保證生成的二維碼都不雷同的?的圖5


加微信:15311423147

申請加入機械工程師微信群!

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP