针对工业物料管理系统对于保密安全的要求,我们为需要采样的物料设计了一种数据加密的QR码,这种加密的QR码可以在Android手机系统下实现识别。

一、加密QR码生成

RC4加密算法是Ron Rivest在1987年设计的密钥长度可变的流加密算法。该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性,适合手机硬件系统的要求;RC4算法属于流加密,被广泛应用予SSL/TLS等网络安全协议。随着手机互联网的发展,使用RC4加密算法便于手机二维码识别系统后续网络化发展。

1、RC4加密算法

RC4加密算法包括密钥调度算法(KSA)和伪随机子密码生成算法(PRGA)两大部分。具体步骤如下:

(1)密钥溯度算法( KSA)D定义一个长度为256B的S盒,同时建立一个临时矢量置k。如果密钥Key的长度≥256 B,则将Key赋给量,多余字节丢弃;否则,计算Key的长度len,将Key的值赋给k的前len个元素,并循环重复用Key的值赋给k剩下的元素,直到k的所有元素部被置换赋值。

(2)伪随机子密码生成算法(PRGA)。将S盒中的每个字节与另一个字节置换,直到最后S[255]置换完成,操作继续重复。加密时,将子序列密钥与安加密的明文进行“异或”得到密文。解密时过程相同。

2、RC4加密算法的混沌改进

(1)RC4加密算法混沌改进

为了提高流密码的遍历性与随机性,在RC4加密算法的密钥生成与伪随机予密码生成过程中采用混沌算法进行改进。Logistic一维映射是一种比较简单的数学形式混沌映射,但是具有非常好的混沌性质,适合手机对算法处理速度快的要求。

Logistic映射数学表达式为:

 

其中当u∈[3.571 448,4],X ∈[0,1]时达到混沌状态,通过运算得到的xn+1值也都在[0,1]范围内。在本系统中,将RC4算法引入Logistic映射,可以提高伪随机码的随机性,及RC4的加密性。改进方法步骤如下:

(1)设定初始的x0值与u值。利用式(1)得到一个混沌值:

 

(2)在RSA生成密钥的过程中,加入得判的混沌值进行迭代运算,生成随机密钥序列。过程如下:

 

(3)在PRGA过程字节进行置换的步骤中,加入混沌映射,循环执行,直到字节都设置换完成为止,过程如下:

 

(4)将步骤(2)、(3)生成的序列进行“异或”运算,完成RsA算法加密步骤。

(2)参数的选棒

Lyapunov指数是混沌状态的主要性能指标。对于Logistic一维映射Xn+1=F(xi)。Lyapunov指数A的计算公式为:

 

当A=O时,系统达到混池状态,产生的序列为随机序列,所以u的取值范围为(3.570,3.582)、(3.584,3.605)、(3.607,3.626)、(3.635,3.655)、(3.657,3.672)、(3.674.3.701)、(3.703,3.738)、(3.744,3.828)、(3.850,3.854)、(3.857,3.905)、(3.907,3.960)、(3.962.4.000)。经过多次实验得出:当初始值Xo=0.432 345、参数u=3.761 847时,加密得到的效果最佳。

3、改进后RC4算法与OR码的结合

由于本系统针对工业中的物料管理系统设计.为了客观公正地反映物料数据,最大程度地减少人为干预,采用RC4算法对已有的QR码舷拯内容进行加密,具体步骤如下:

(1)运行程序后,首先输入密钥;

(2)摄像头捕捉QR码图像后生成一张位图,交予QR译码程序;

(3)QR泽码程序按照国家标准解码,进行到纠错步骤后,提取数据码字;

(4)按照RC4算法解密步骤进行解密,井输出结果。

例如.需要加密的文本为:厂家;某煤矿;全水分:9.4gro;低位热值:5914 cal/kg;加密后的文本为:叁娘?枉栾蠛暖t冢讽仞$?)??#俞俘饭做@-?v医、砸冬。利用Java编写QR码生成系统,加密前后生成的QR码图片如图1(a)、(b)所示。

 

二、加密QR码识别

QR码识别系统在Android手机系统下实现。

1、Android系统简介

Android是基于Limrx开放性内棱的操作系统,是Google公司在2007年t1月5日公布的手机操作系统。Android应用程序使用Java做为开发语言。本系统的开发环境为eclipse -SDK -3-5.2 +android -sdk_rl0 +ADT -0.9.7。

2、QR码识别系统的主要模块

系统主要分为图像采集、图像处理、QR码的译码及数据解密4个模块。

图像采集:点击按钮启动程睁同时启动手机的摄像头,开始实时捕捉QR码图像,如果检测到QR码,就将这一帧的图像捕捉并进行图像处理。

图像处理:(1)灰度化,手机获取的彩色图像变为黑白图像,减少信息景,加快处理速度;(2)中值滤波,使用适当的矩形窗口中值滤波处理掉光学采集系统中产生的椒盐噪声;(3)二值化,采用直方图双峰方式进行图像分削,将整个图像呈现出明显的、只有黑白的视觉效果。

QR码译码:按照国家GB/T 18284 2000标准进行解码。

数据解密:按照混沌改进RC4算法的步骤对数据码字进行解密。

3、多线程处理

在图像预处理及QR编码过程中,往往需要处理大量的数据的情况。为了提高识别速度,解码编码时采用多线程处理。

Android系统支持多绂程应用。支持利用handler接收子线程的数据。多线程处理实现方法:为每个处理步骤开启一个线程,并在实现其run方法同时需要创建一个message,并定义好其属性;在完成操作后将敷搬发送给handler。通过hluullcr发送messa8e来达到多线程的调度,避免多线程操作时遇到资源冲突而发生异常。

三、数据加密QR码在工业物料管理系统中的应用

由于采用了混沌改进的RC4算法对物料数据的QR码进行了加密,在识别程序设计中采用多线程处理等编程技巧,从而使该物科数据QR码生成及识别系统的加密效果和识别速度达到较高要求。

1、改进RC4算法的加密性能分析

本文采用频率测试和游程测试对加密算法的随机性进行分析。频率测试公式为:

 

在Matlab上输入公式进行测试,编写改进的RC4算法,产生一个随机序列,将得到的随机序列中的0值转换为-1。相加得到sn。总共取出230多个随机序列。每个随机序列长度不同,将它与已经设置好的参敦一起代入式(3)得出的P-Value值大千0.01。如图2(a)所示。

游程测试公式为:

 

Vn(obs)为随机序列中所有0、1值的和,n为加密随机序列长度,将所有参数代人式(4)得出的p- Value值都大予0.01,如图2(b)所示。

 

频率测试和游程测试出的P-Value值都大予NIST(美国国家标准与技术委员会)规定的0.01。都符合理想随机序列标准。

2、系统识别速度

QR码识别系统在摩托罗拉开发的里程碑、里程碑2、ME525及HTC开发的G7手机上进行涮试,测试手机的像素一般为500万,测试图片的大小为200x2000在73张图片中有4张污损图片不能译码,其余测试结果良好。

图3是本系统在ME525手机上运行时,对图1(b)所示加密QR玛进行解码的操作,其中图3(a)为打开直用时的显示界呵,由此输入密码。圈3(b)为解码后结果,其中第一行为没有进行解密的译码结果.图中显示为一行乱码,不能得到QR码中的准确信息;第二行娜密译码结果可以清楚看到厂家物料信息。图3(b>最下面显示一次识别的识别时问,识别时间是从打开摄像头捕获图像后开始计算。正常情况下本系统识别二维码图像的时间为1400ms一4700ms。

 

另外,识别速度还与光线、对焦时间有关。测试时光线不充足或过于充足邪会影响识别时间。若图片距离手机过近则影响对焦时问,从呵导致识别速度过慢。

Android手机系统功能丰富,携带方便,受周边环境影响较小。使用智能手机识别二维码已经成为条码识别的一个趋势,而且可扩展性强。可显著挺商工业管理生产效率经过测试及分析,本系统符合QR码加密性能、识别的时间和准确度要求。

小知识之QR码QR码是二维条码的一种,QR来自英文 “Quick Response” 的缩写,即快速反应的意思,源自发明者希望 QR 码可让其内容快速被解码。QR码比普通条码可储存更多资料,亦无需像普通条码般在扫描时需直线对准扫描器。