二維碼中的加密應(yīng)用

二維碼在我們的生活中是比較常見的,wifi掃一掃,訂餐掃一掃,購物掃一掃等等,小編最先接觸的是用微信掃描的,現(xiàn)在用的還很多,那么二維碼是如何生成的呢?又是如何加密的呢?可靠性強(qiáng)嗎?

1 概述

在現(xiàn)代社會(huì),信息顯得越來越重要,進(jìn)入到人們生活的各個(gè)領(lǐng)域,因而信息安全、隱藏技術(shù)越來越受到人們的重視。條碼技術(shù)是在條碼理論、光電技術(shù)、計(jì)算機(jī)技術(shù)和通信技術(shù)等基礎(chǔ)上發(fā)展起來的集編碼、印刷、識(shí)別、數(shù)據(jù)采集與處理于一體的綜合性技術(shù)。由于工業(yè)中產(chǎn)生的數(shù)據(jù)信息量不斷增加,一維條碼技術(shù)已經(jīng)不能滿足社會(huì)的需求,人們開始廣泛使用二維條碼技術(shù)。二維條碼具有信息容量大、密度高、糾錯(cuò)能力強(qiáng)、譯碼可靠性高等特點(diǎn),可以將文字、圖形、圖像等一切可以數(shù)字化的信息進(jìn)行編碼。雖然二維條碼本身具有一定的保密性,但這遠(yuǎn)遠(yuǎn)不能滿足人們對(duì)其在各種通訊網(wǎng)絡(luò)傳輸時(shí)的保密性的要求,所以如何對(duì)二維碼進(jìn)行加密,成為了二維碼信息安全必須考慮的問題。本文介紹通過對(duì)QR二維碼進(jìn)行加密和解碼,介紹使用RSA加密算法,加強(qiáng)二維碼信息的安全方法。

2 QR二維碼簡介

QR碼是快速識(shí)別矩陣碼(quick response code)的簡稱,上世紀(jì)90年代推出,我國于2000年底頒布了QR碼的國家標(biāo)準(zhǔn)。QR碼具有信息容量大、高速全方位識(shí)讀、支持加密算法、容易制造、使用成本低、誤碼率低、容錯(cuò)能力強(qiáng)等特點(diǎn),它由功能圖形區(qū)和編碼區(qū)組成,如圖1所示。功能圖形區(qū)又分為空白區(qū)、位置探測圖形、分隔符、定位圖形和校正圖形組成,用于符號(hào)定位和特征識(shí)別的特定圖形,不用于數(shù)據(jù)編碼;編碼區(qū)由格式信息、版本信息以及數(shù)據(jù)和糾錯(cuò)碼字組成,該區(qū)域用來保存數(shù)據(jù)。

3 RSA密碼算法基礎(chǔ)

RSA算法是目前應(yīng)用最為廣泛的非對(duì)稱加密算法,或者說公鑰密碼算法,它不僅可以用來加密,而且可以用來進(jìn)行數(shù)字簽名。RSA密碼算法自1978年由Ron Rivest、Adi Shamir以及Leonard Adleman提出以來,一直被認(rèn)為是一種安全性能很高的密碼算法。RSA密碼算法具體描述如下:

4 RSA加密算法在二維碼信息安全上的應(yīng)用

RSA加密算法應(yīng)用到二維碼上,主要是在二維碼編碼前對(duì)數(shù)據(jù)進(jìn)行加密,在驗(yàn)證時(shí)對(duì)數(shù)據(jù)進(jìn)行解密。

4.1 QR碼的生成

QR碼的生成步驟為:

①將相關(guān)數(shù)據(jù)信息通過RSA加密模塊進(jìn)行加密;

②使用ZXing類庫提供的編碼功能將加密后的數(shù)據(jù)進(jìn)行編碼形成QR二維碼圖形; ③將此圖形保存在系統(tǒng)指定的位置。

4.2 QR碼驗(yàn)證的實(shí)現(xiàn)

QR碼的驗(yàn)證步驟為:

①通過CMOS(或CCD)攝像頭、手持式掃描設(shè)備將QR碼圖形讀取到系統(tǒng)中; ②使用ZXing類庫提供的解碼功能將QR碼中的數(shù)據(jù)解析出來;

③通過RSA解密模塊將數(shù)據(jù)還原;

④通過人工模式或自動(dòng)識(shí)別模式對(duì)QR碼的持有者進(jìn)行身份比對(duì)。

5 RSA算法的C語言實(shí)現(xiàn)

RSA加密算法的關(guān)鍵是冪的取余運(yùn)算,限于篇幅,只寫出該部分的實(shí)現(xiàn)程序。

6 結(jié)論

由于使用靈活、方便,被認(rèn)為是一種“零成本”技術(shù),QR二維碼目前得到了廣泛使用。本文將QR二維碼與密碼技術(shù)結(jié)合起來可以保證二維條碼的信息安全,探討解決二維碼使用過程中的防偽問題,并列出了C語言實(shí)現(xiàn)RSA算法的部分程序。