APP下载

物料数据加密QR码识别系统的实现

2012-07-03张文爱

电子技术应用 2012年4期
关键词:译码解密密钥

张文爱,吕 韬

(太原理工大学 信息工程学院,山西 太原030024)

随着现代社会的发展,在日常生活及工业生产中需要传输的数据信息量越来越大,常用的一维条码技术已经不能满足人们要求,二维条码技术得到了快速发展,获得了社会的普遍认同。智能手机作为便携设备应用广泛,尤其它具有内置摄像头可以直接获取图像数据,使得二维条码的识别变得更加快捷高效。

QR码是目前应用较为广泛的一种矩阵式二维码,考虑到工业物料管理系统对加密性的特殊要求,本文采用RC4算法对QR码进行加密处理,并在android系统下设计实现。

1 加密QR码生成

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

1.1 RC4算法

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

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

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

1.2 RC4算法的混沌改进

1.2.1 RC4算法混沌改进

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

Logistic映射数学表达式为:

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

(1)设定初始的X0值与u值。利用式(1)得到一个混沌值 y=u×X0×(1-X0)。

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

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

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

1.2.2 参数的选择

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

当λ=0时,系统达到混沌状态,产生的序列为随机序列,所以 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)。经过多次实验得出:当初始值X0=0.432 345、参数 u=3.761847时,加密得到的效果最佳。

1.3 改进后RC4算法与QR码的结合

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

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

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

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

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

例如,需要加密的文本为:厂家:某煤矿;全水分:9.4%;低位热值:5914 cal/kg;加密后的文本为:叁嬝?枉枽熂矆t冢沨仞$?)??#俞佖炍倯@_?v匧厙冬。利用Java编写QR码生成系统,加密前后生成的QR码图片如图 1(a)、(b)所示。

2 加密QR码识别

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

2.1 Android系统简介

Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统[5]。Android应用程序使用Java做为开发语言。本系统的开发环境为eclipse-SDK-3.5.2+android-sdk_r10+ADT-0.9.7。

2.2 QR码识别系统的主要模块

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

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

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

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

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

2.3 多线程处理

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

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

3 系统性能分析

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

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

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

在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,即符合理想随机序列标准。

3.2 系统识别速度

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

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

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

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

[1]宋维平.流密码与RC4算法[J].吉林师范大学学报(自然科学版),2005(5):71-72.

[2]PETER K,MANUEL L,MARTIN M.QR code security[C].MoMM2010-8th International Conference on Advances in Mobile Computing and Multimedia,2010.

[3]HONGGEUN K,JUNGKYU H,SEONGJE C.An efficient implementation of RC4 cipher for encrypting multimedia files on mobile devices[C].Proceedings of the ACM Symposium on Applied Computing,2007.

[4]金海荣.混沌序列密码分析及其应用研究[D],哈尔滨:黑龙江大学,2009.

[5]谷歌公司.Android开发手册[EB/OL](2010-09-23).http://developer.android.com.

[6]国家质量技术监督局.中华人民共和国国家标准——快速响应矩阵码[S].北京:标准出版社,2001.

[7]ANDREW R,JUAN S,JAMES N.A statistical test suite for random and pseudorandom number generators for cryptographic applications[S].NIST Special Publication,2001.

猜你喜欢

译码解密密钥
幻中邂逅之金色密钥
炫词解密
分段CRC 辅助极化码SCL 比特翻转译码算法
基于校正搜索宽度的极化码译码算法研究
解密“一包三改”
密码系统中密钥的状态与保护*
炫词解密
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
从霍尔的编码译码理论看弹幕的译码