物料数据加密QR码识别系统的实现
扫描二维码
随时随地手机看文章
摘 要: 针对工业物料管理系统对于保密安全的要求,为采样的物料设计了一种加密的QR码,并在Android手机系统下实现识别。介绍了对RC4算法的混沌改进及混沌参数的选择,提出了将改进的RC4算法用于QR码加密的方法,实现了物料数据QR码的编码及识别。测试结果表明,该系统能满足实际应用对加密性能和识别速度的要求。
关键词: 条码识别; QR码; Android; 解密; RC4
随着现代社会的发展,在日常生活及工业生产中需要传输的数据信息量越来越大,常用的一维条码技术已经不能满足人们要求,二维条码技术得到了快速发展,获得了社会的普遍认同。智能手机作为便携设备应用广泛,尤其它具有内置摄像头可以直接获取图像数据,使得二维条码的识别变得更加快捷高效。
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映射数学表达式为:
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 多线程处理