物料數(shù)據(jù)加密QR碼識別系統(tǒng)的實現(xiàn)
摘 要: 針對工業(yè)物料管理系統(tǒng)對于保密安全的要求,為采樣的物料設(shè)計了一種加密的QR碼,并在Android手機系統(tǒng)下實現(xiàn)識別。介紹了對RC4算法的混沌改進及混沌參數(shù)的選擇,提出了將改進的RC4算法用于QR碼加密的方法,實現(xiàn)了物料數(shù)據(jù)QR碼的編碼及識別。測試結(jié)果表明,該系統(tǒng)能滿足實際應(yīng)用對加密性能和識別速度的要求。
關(guān)鍵詞: 條碼識別; QR碼; Android; 解密; RC4
隨著現(xiàn)代社會的發(fā)展,在日常生活及工業(yè)生產(chǎn)中需要傳輸?shù)臄?shù)據(jù)信息量越來越大,常用的一維條碼技術(shù)已經(jīng)不能滿足人們要求,二維條碼技術(shù)得到了快速發(fā)展,獲得了社會的普遍認同。智能手機作為便攜設(shè)備應(yīng)用廣泛,尤其它具有內(nèi)置攝像頭可以直接獲取圖像數(shù)據(jù),使得二維條碼的識別變得更加快捷高效。
QR碼是目前應(yīng)用較為廣泛的一種矩陣式二維碼,考慮到工業(yè)物料管理系統(tǒng)對加密性的特殊要求,本文采用RC4算法對QR碼進行加密處理,并在android系統(tǒng)下設(shè)計實現(xiàn)。
1 加密QR碼生成
RC4加密算法是Ron Rivest在1987年設(shè)計的密鑰長度可變的流加密算法簇[1]。 該算法的速度可以達到DES加密的10倍左右,且具有很高級別的非線性,適合手機硬件系統(tǒng)的要求;RC4算法屬于流加密,被廣泛應(yīng)用于SSL/TLS等網(wǎng)絡(luò)安全協(xié)議[2-3]。隨著手機互聯(lián)網(wǎng)的發(fā)展,使用RC4算法便于手機二維碼識別系統(tǒng)后續(xù)網(wǎng)絡(luò)化發(fā)展。
1.1 RC4算法
RC4算法包括密鑰調(diào)度算法(KSA)和偽隨機子密碼生成算法(PRGA)兩大部分。具體步驟如下:
(1)密鑰調(diào)度算法(KSA)。定義一個長度為256 B的S盒,同時建立一個臨時矢量K。如果密鑰Key的長度≥256 B,則將Key賦給K,多余字節(jié)丟棄;否則,計算Key的長度len,將Key的值賦給K的前l(fā)en個元素,并循環(huán)重復(fù)用Key的值賦給K剩下的元素,直到K的所有元素都被置換賦值。
(2)偽隨機子密碼生成算法(PRGA)。將S盒中的每個字節(jié)與另一個字節(jié)置換,直到最后S[255]置換完成,操作繼續(xù)重復(fù)。加密時,將子序列密鑰與要加密的明文進行“異或”得到密文。解密時過程相同。
1.2 RC4算法的混沌改進
1.2.1 RC4算法混沌改進
為了提高流密碼的遍歷性與隨機性,在RC4算法的密鑰生成與偽隨機子密碼生成過程中采用混沌算法進行改進。Logistic一維映射是一種比較簡單的數(shù)學(xué)形式混沌映射,但是具有非常好的混沌性質(zhì),適合手機對算法處理速度快的要求。
Logistic映射數(shù)學(xué)表達式為:
2 加密QR碼識別
QR碼識別系統(tǒng)在Android手機系統(tǒng)下實現(xiàn)。
2.1 Android系統(tǒng)簡介
Android是基于Linux開放性內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機操作系統(tǒng)[5]。Android應(yīng)用程序使用Java做為開發(fā)語言。本系統(tǒng)的開發(fā)環(huán)境為eclipse-SDK-3.5.2+android-sdk_r10+ADT-0.9.7。
2.2 QR碼識別系統(tǒng)的主要模塊
系統(tǒng)主要分為圖像采集、圖像處理、QR碼的譯碼及數(shù)據(jù)解密4個模塊。
圖像采集:點擊按鈕啟動程序同時啟動手機的攝像頭,開始實時捕捉QR碼圖像,如果檢測到QR碼,就將這一幀的圖像捕捉并進行圖像處理。
圖像處理:(1)灰度化,手機獲取的彩色圖像變?yōu)楹诎讏D像,減少信息量,加快處理速度;(2)中值濾波,使用適當?shù)木匦未翱谥兄禐V波處理掉光學(xué)采集系統(tǒng)中產(chǎn)生的椒鹽噪聲;(3)二值化,采用直方圖雙峰方式進行圖像分割,將整個圖像呈現(xiàn)出明顯的、只有黑白的視覺效果。
QR碼譯碼:按照國家GB/ T 18284 2000標準[6]進行解碼。
數(shù)據(jù)解密:按照混沌改進RC4算法的步驟對數(shù)據(jù)碼字進行解密。
2.3 多線程處理