您当前的位置:首页 > 技术风向标

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

时间:2015-10-27  来源:扁平线圈电感厂家  点击:

摘 要: 针对工业物料管理系统对于保密安全的要求,为大功率电感器采样的物料设计了一种加密的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 多线程处理


在图像预处理及QR解码过程中,往往需要处理大量的数据的情况。为了提高识别速度,解码编程时采用多线程处理。
  Android系统支持多线程应用,支持利用handler接收子线程的数据。多线程处理实现方法:为每个处理步骤开启一个线程,并在实现其run方法同时需要创建一个message,并定义好其属性;在完成操作后将数据发送给handler,通过handler发送message来达到多线程的调度,避免多线程操作时遇到资源冲突而发生异常。
3 系统性能分析
由于采用了混沌改进的RC4算法对物料数据的QR码进行了加密,在识别程序设计中采用多线程处理等编程技巧,从而使该物料数据QR码生成及识别系统的加密效果和识别速度达到较高要求。

大电流电感

倍流整理中,若二极管非可控,那电感电容如何计算呢 二极管不可控,那这里头的电感电容值怎么计算,以前用的是全波整流,带中心抽头的,电感取值为50uh,现在变换电路了如何取值呢

[ADI]LTC4006充电电路,求大神帮助 本帖最后由 love44570510 于 2016-10-28 13:51 编辑 是这样的,我基于LTC4006-6做了一个8.4V锂电池充电电路,现在碰到一个问题,充电板加载有些电池不充电,电压为6.8V左右,有些就工作正常正常充电我用官方的DEMO板测试所有电池都可以正常检测并充电;用示波器量了一下发现没充电时候板卡的TGATE和BGATE一直都是PWM信号,充电电压8.4V没错,加载电池以后就变成一段一段的PWM信号,充电电压被拉到6.8V,好费解啊,能充电的电池所有板卡测试都没问题,20块,

求共享以下PWM,PFM以及PFM/PWM的资料小弟初识电路,希望学习一下控制模式的知识,特别是PFM和PFM/PWM的资料,因为比较少接触到这两种控制模式,有没有哪位兄弟那有关于这方面的资料的共享学习一下不如百度

注塑加工厂


上一篇Avnet Xilinx Kintex-7 FPGA Mini-ModulePlus开发方案

下一篇用MEMS加速度计作为拾音器完美再现乐器音效


  
  温馨提示
网站首页 | 产品展示 | 科技前沿 | 行业资讯
本公司专业研发、设计、生产、销售贴片电感、插件电感、功率电感、大电流电感、扁平线圈电感、一体成型电感。
专业电感生产制造商,品质优异、交期快。
在线客服
热线电话