国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

AES算法在QR二維碼生成識(shí)別中的應(yīng)用

2019-10-21 13:09:08李震
現(xiàn)代信息科技 2019年21期
關(guān)鍵詞:信息安全

摘? 要:QR二維碼因成本低、存儲(chǔ)容量大、存儲(chǔ)范圍廣等特點(diǎn),已經(jīng)是世界上應(yīng)用最廣泛的二維碼之一。本文探討了基于AES算法對(duì)QR二維碼進(jìn)行加密、解密的設(shè)計(jì),并使用Java語(yǔ)言對(duì)這一設(shè)計(jì)進(jìn)行了實(shí)現(xiàn),以增強(qiáng)QR二維碼在流通、傳播過(guò)程中的安全性。

關(guān)鍵詞:信息安全;AES加密算法;QR二維碼;Java

中圖分類號(hào):TP391.44;TP309? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)21-0144-03

Abstract:QR two-dimensional code is one of the most widely used two-dimensional codes in the world because of its low cost,large storage capacity and wide storage range. This paper discusses the design of encrypting and decrypting QR two-dimensional codes based on AES algorithm,and implements the design in Java language to enhance the security of QR two-dimensional codes in the process of circulation and transmission.

Keywords:information security;AES encryption algorithm;QR two-dimensional code;Java

1? 概述

隨著我國(guó)移動(dòng)互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,以QR碼為代表的二維碼信息存儲(chǔ)、傳輸和識(shí)別技術(shù)以其無(wú)可替代的高效性、靈活性及低成本等特點(diǎn),在移動(dòng)支付、信息共享等日常生活的中迅速普及。然而,利用二維碼傳播計(jì)算機(jī)木馬、病毒,以及盜竊用戶個(gè)人信息,導(dǎo)致隱私泄露等問(wèn)題也屢見(jiàn)不鮮??梢钥吹剑诤芏囝I(lǐng)域中,二維碼信息安全都是一個(gè)不可忽視、也無(wú)法回避的問(wèn)題,二維碼的安全和保密問(wèn)題也越來(lái)越有研究?jī)r(jià)值[1]。本文探討了一種通過(guò)利用AES加密算法對(duì)QR二維碼進(jìn)行加密的方式來(lái)提高二維碼信息安全的方法。

2? QR碼簡(jiǎn)介

QR碼(Quick Response Code)是由日本DENSO WAVE公司于1994年推出的一種矩陣二維碼編碼方式,也是目前世界上使用最廣泛的二維碼編碼方式之一。QR碼不僅具有存儲(chǔ)信息量大、成本低、誤碼率低等一些二維碼的共通特點(diǎn),還具有全方位快速識(shí)別,可以對(duì)包括漢字在內(nèi)的各種文字、圖形、圖像等幾乎所有數(shù)字媒體進(jìn)行編碼等優(yōu)點(diǎn)。根據(jù)ISO標(biāo)準(zhǔn)規(guī)定,QR碼由包含位置探測(cè)圖形、分隔符、定位圖形、校正圖形的功能區(qū)和包含格式信息、版本信息、數(shù)據(jù)和糾錯(cuò)碼在內(nèi)的編碼區(qū)兩部分組成。功能圖形區(qū)負(fù)責(zé)定位圖像、識(shí)別特定圖像等,不含有數(shù)據(jù)信息;編碼區(qū)主要用于保存數(shù)據(jù)信息和版本、格式信息,也提供糾錯(cuò)功能[2]。QR碼版本7的符號(hào)結(jié)構(gòu)示意圖如圖1所示[3]。

如圖1所示,QR碼的控制信息中本身并沒(méi)有對(duì)數(shù)據(jù)信息進(jìn)行加密,且由于QR碼編碼解碼的算法本身是公開(kāi)的,其所攜帶的信息如果被無(wú)關(guān)的組織、機(jī)構(gòu)或是個(gè)人隨意讀取,很容易造成不必要的信息泄露、隱私曝光。在以QR碼為媒介進(jìn)行敏感信息傳遞時(shí),需要有一種簡(jiǎn)單、快速、有效的加密手段。

3? AES算法原理

作為DES算法的升級(jí)替代,AES算法(Advanced En-cryption Standard)自2000年正式公布以來(lái),其安全、可靠、簡(jiǎn)單、快速的特性已被多方分析研究檢證。作為當(dāng)前最為常見(jiàn)的對(duì)稱加密算法之一,在全世界范圍內(nèi)有著廣泛的應(yīng)用。AES算法加密的數(shù)據(jù)塊和密鑰長(zhǎng)度相同,分為16字節(jié)、24字節(jié)和32字節(jié)三種。密鑰越長(zhǎng),其加密的輪次越多,安全性也越強(qiáng)。下面以16字節(jié)密鑰為例,對(duì)AES算法原理進(jìn)行簡(jiǎn)單說(shuō)明[4]。

AES算法在加密時(shí)的輸入包括同為16字節(jié)的明文和密鑰,輸出為16字節(jié)的密文。明文和密鑰都可以被看作是一個(gè)4*4的字節(jié)矩陣。算法包括密鑰擴(kuò)展(KeyExpansion)、輪密鑰加(AddRoundKey)、字節(jié)替換(SubBYtes)、行移位(ShiftRows)、列混淆(MixColumns)等步驟。

(1)密鑰擴(kuò)展:通過(guò)一個(gè)混合操作將初始密鑰擴(kuò)展成多個(gè)16字節(jié)的輪密鑰,供后面的輪加密使用;

(2)輪密鑰加:當(dāng)前狀態(tài)與輪密鑰進(jìn)行按位XOR異或運(yùn)算;

(3)字節(jié)替換:利用一個(gè)S盒完成一個(gè)狀態(tài)到下一狀態(tài)中字節(jié)的一一映射;

(4)行移位:將狀態(tài)中的每行分別向左偏移0,1,2,3個(gè)字節(jié);

(5)列混淆:將狀態(tài)中的每列獨(dú)立操作,與一個(gè)固定的多項(xiàng)式進(jìn)行模乘,使每列中的每個(gè)字節(jié)都被映射為一個(gè)新的值。

加密的過(guò)程如圖2所示。輸入的密鑰經(jīng)過(guò)密鑰擴(kuò)展,與明文做第一次輪密鑰加。之后按照字節(jié)替代、行移位、列混淆、輪密鑰加的順序完成一輪的加密,加密的中間結(jié)果稱為狀態(tài)(State)。中間狀態(tài)和相對(duì)應(yīng)輪的輪密鑰繼續(xù)進(jìn)行重復(fù)的多輪次變換(16字節(jié)密鑰為10輪,其中最終輪不需要列混淆),最終達(dá)到高強(qiáng)度的加密效果,輸出最終的密文。

解密過(guò)程輸入16字節(jié)密文,使用與加密過(guò)程中相同的密鑰,運(yùn)算過(guò)程與加密相反,如圖2所示,其中使用的S盒的字節(jié)替代、線性變換的行移位和列混淆均為原運(yùn)算方式的逆向運(yùn)算。同樣地,對(duì)應(yīng)著加密的最終輪,最先進(jìn)行的解密輪次也不需要進(jìn)行逆向列混淆。經(jīng)過(guò)總共10輪的變換,輸出16字節(jié)明文,達(dá)到解密的目的。

4? 應(yīng)用AES算法對(duì)QR二維碼加密解密

基本思路是在QR二維碼編碼前,應(yīng)用AES算法對(duì)原始數(shù)據(jù)進(jìn)行加密。再對(duì)密文進(jìn)行QR碼編碼,這樣即使該QR二維碼在傳播過(guò)程中被不相干的組織或者個(gè)人獲取,也無(wú)法破譯。需要獲取該二維碼信息時(shí),在讀取QR碼前,輸入與加密時(shí)相同的密鑰,即可獲取到原始的信息。

限于篇幅,本文只展示加密過(guò)程實(shí)現(xiàn)的主要代碼。

4.1? 加密過(guò)程的實(shí)現(xiàn)

(1)手動(dòng)輸入的密鑰安全性低,且長(zhǎng)度不容易控制,這里選擇通過(guò)KeyGenerator類生成128位的隨機(jī)源,再轉(zhuǎn)換成AES算法可用的原始對(duì)稱密鑰的方式來(lái)創(chuàng)建密鑰,并對(duì)該密鑰進(jìn)行保存,以備解密使用。

KeyGenerator keyGenerator;// 生成key

keyGenerator = KeyGenerator.getInstance("AES");

keyGenerator.init(128);//生成一個(gè)128位的隨機(jī)源

SecretKey secretKey = keyGenerator.generateKey();

byte[] keyBytes = secretKey.getEncoded();//產(chǎn)生原始對(duì)稱密鑰

Key key = new SecretKeySpec(keyBytes, "AES");

(2)以字節(jié)數(shù)組形式獲取待加密的明文數(shù)據(jù),并對(duì)明文數(shù)據(jù)進(jìn)行AES算法加密。

Stingcontext = "測(cè)試內(nèi)容";//待加密明文

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

cipher.init(cipher.ENCRYPT_MODE,key);//指定加密模式,輸入密鑰

byte[] resultAes = cipher.doFinal(context.getBytes());

(3)得到的密文通過(guò)ZXing類庫(kù)提供的編碼模塊進(jìn)行QR二維碼編碼,并將結(jié)果以png格式寫入指定的文件中保存。

Hashtable hintsAes = new Hashtable();//創(chuàng)建QR編碼參數(shù)的哈希表

hintsAes.put(EncodeHintType.CHARACTER_SET, "utf-8");

BitMatrix bitMatrixAes = new MultiFormatWriter ().encode(new String(resultAes), BarcodeFormat.QR_CODE, 300, 300, hintsAes);//輸入密文,執(zhí)行QR碼編碼

File outputFileAes = new File("d:" + File.separator + "QRPictureAes.png");

QRUtil.writeToFile(bitMatrixAes, "png", output FileAes);

4.2? 解密過(guò)程

(1)通過(guò)移動(dòng)設(shè)備攝像、外部圖片導(dǎo)入等方式,將保存的圖片以比特流的形式讀入系統(tǒng);

(2)利用ZXing類庫(kù)提供的解碼模塊,對(duì)讀入的QR二維碼進(jìn)行解碼,得到AES算法加密后的密文;

(3)輸入與加密時(shí)相同的16字節(jié)密鑰,對(duì)密文形式的QR二維碼利用AES算法進(jìn)行解密,得到最終的明文結(jié)果。

根據(jù)圖3和圖4的對(duì)比可以看出,雖然同樣使用的是QR二維碼編碼,但是經(jīng)過(guò)AES加密可形成完全不同的圖形編碼。對(duì)圖4經(jīng)過(guò)AES算法加密后的QR碼進(jìn)行識(shí)別,其結(jié)果如圖5所示,讀取到加密后的密文在不知道密鑰的前提下幾乎無(wú)法破譯。用相應(yīng)的密鑰對(duì)圖4中加密后的QR碼進(jìn)行解密,解密后的識(shí)別結(jié)果如圖6所示,利用正確密鑰對(duì)經(jīng)過(guò)AES算法加密的QR碼解密,則可以快速地還原出原始的數(shù)據(jù)。

5? 結(jié)? 論

本文對(duì)QR二維碼與AES算法的基本原理進(jìn)行了歸納總結(jié),并提出了在QR二維碼編碼前,生成隨機(jī)密鑰對(duì)原始數(shù)據(jù)使用AES算法加密的方法,將QR二維碼生成識(shí)別與AES加密算法兩種技術(shù)合理有效地結(jié)合起來(lái),是對(duì)二維碼存儲(chǔ)、傳播、識(shí)別過(guò)程中存在的信息安全問(wèn)題的一種快速、簡(jiǎn)單的解決方案,并且利用Java語(yǔ)言對(duì)該方案進(jìn)行實(shí)現(xiàn),為進(jìn)一步深入研究實(shí)現(xiàn)更加靈活高效的QR二維碼信息安全提供了思路,具有一定的研究?jī)r(jià)值和較強(qiáng)的實(shí)用性。

參考文獻(xiàn):

[1] 單利安.QR二維碼水印加密及解密算法研究 [J].無(wú)線互聯(lián)科技,2013(10):122-123.

[2] 李逢玲,鄭飛.RSA加密算法在QR二維碼上的應(yīng)用探討 [J].中小企業(yè)管理與科技(上旬刊),2014(11):207-208.

[3] 張定會(huì),單俊濤,江平.QR碼DES加密與解密 [J].數(shù)據(jù)通信,2011(3):40-42.

[4] 陳彥龍,楊立波.AES算法的研究與實(shí)現(xiàn) [J].中國(guó)科教創(chuàng)新導(dǎo)刊,2012(28):34+36.

作者簡(jiǎn)介:李震(1985-),男,漢族,湖南隆回人,專職教師,助教,碩士研究生,研究方向:信息系統(tǒng)開(kāi)發(fā)、軟件工程。

猜你喜歡
信息安全
《信息安全與通信保密》征稿函
信息安全專業(yè)人才培養(yǎng)探索與實(shí)踐
保護(hù)信息安全要滴水不漏
高校信息安全防護(hù)
保護(hù)個(gè)人信息安全刻不容緩
信息安全
江蘇年鑒(2014年0期)2014-03-11 17:10:07
麟游县| 东至县| 曲松县| 南和县| 宣恩县| 嘉义市| 织金县| 松潘县| 灵璧县| 邢台县| 洪湖市| 陈巴尔虎旗| 朝阳区| 兴国县| 安丘市| 类乌齐县| 阜南县| 阿荣旗| 宁安市| 泉州市| 海伦市| 沁水县| 新巴尔虎右旗| 峡江县| 广平县| 新密市| 邵武市| 曲周县| 宁陵县| 安义县| 广安市| 和林格尔县| 盐源县| 棋牌| 霍林郭勒市| 南岸区| 中西区| 东乡县| 绥棱县| 涞源县| 类乌齐县|