当前位置 : 主页 > 编程语言 > java >

基于Android的票据二维的码中信息获取处理与分析系统

来源:互联网 收集:自由互联 发布时间:2023-02-04
摘要 二维码是一种特定的几何图形,它按照某种规律在平面(二维方向)将数据和信息填充在一个黑白相间的正方形中。二维码编码中是通过计算机的特有的“0”、“1”比特流的概念

摘要

二维码是一种特定的几何图形,它按照某种规律在平面(二维方向)将数据和信息填充在一个黑白相间的正方形中。二维码编码中是通过计算机的特有的“0”、“1”比特流的概念,使用对应的二进制来表示数据和信息,可以通过手机的摄像头或者其他的图像扫描设备对其进行读取识别来实现信息获取处理。二维码可以在水平和垂直两个方向的一起表达信息,所以它可以表达大量的数据和信息在一个非常小的区域中。二维码广泛应用于我们生活的各个领域。本文主要研究的是如何通过扫描动车票中的二维码来获取信息的技术,主要介绍了二维码的生成和二维码的读取识别以及实现方法,主要阐述了二维码软件研究的背景以及研究该系统软件的意义,并实现系统的测试。

本课题利用Eclipse工具软件,基于Android平台对系统进行开发。本系统主要根据Google code上面提供的一个关于条码编解码的 ZXing开源项目,设计并完成了票据二维码中信息获取处理与分析系统。主要功能有:二维码的信息生成,二维码的信息读取识别,二维码信息的生成分享,二维码的信息RSA加解密,二维码信息AES加解密,二维码信息MD5加密,二维码WIFI网络的生成与连接,模拟火车票的二维码生成,二维码名片的生成与分享等。

本课题是对票据二维码中的信息获取处理与分析系统的设计。第一章介绍本课题的意义及目的和二维码的发展背景以及本课题主要研究的内容和方法;第二章介绍本课题软件系统的开发环境和技术理论;第三章介绍本软件系统设计概要;第四章介绍本软件系统的设计以及实现;第五章介绍软件系统的测试。

关键词:票据二维码 信息获取 RSA加解密 AES加解密 二维码WIFI

目  录

1 绪论11

1.1 课题的意义及目的11

1.2 二维码发展背景11

1.3 本课题主要研究内容及研究方法22

2 软件开发环境与技术理论33

2.1 软件开发工具配置33

2.2 软件运行环境33

2.3 开发环境33

2.4 Android的系统架构44

2.5 Java编程语言44

3 软件系统设计概要55

3.1 软件开发目标55

3.2 软件设计原则55

4 软件设计与实现66

4.1 软件的界面设计66

4.2 软件的系统结构66

4.3 软件所运用RSA算法、AES算法、MD5算法88

4.4 软件模块设计1313

5 软件系统测试1616

5.1 二维码图片扫描模块测试1616

5.2 二维码图片生成模块测试1717

5.3 其他模块测试1919

结论2525

参考文献2626

致谢2727

1 绪论

1.1 课题的意义及目的

二维码技术具有信息容量大、安全强度高、抗损能力强、制作简单、成本低等优点,并且可以直接用手机进行拍照后识读[1]。因为Android系统是免费的,越来越多的手机生产商选择了Android系统。由于安卓手机的流行,二维码也随着Android手机慢慢的流行起来。我们通过二维码扫描软件只需轻轻一扫,便可以实现添加好友、下载软件、登入帐号上网等等。但是一些不法分子利用手机病体对二维码“下毒”,通过扫描二维码下载恶意软件使手机中毒,这让二维码当上了“替罪羊”。

票据二维码信息泄露和篡改所带来的负面影响也正在不断扩大,票据泄露受攻也成为网络的一个有害威胁。在这其中,票据信息泄露包括动车票据的火车票号、发车时间及身份证号码等常规信息,以及凡是有二维码构造的票据形式等都是黑客的主要击打行为方式。用户真实信息一旦被泄露恢复或复制篡改,不仅影响个人隐私保护问题,而直接影响票务机构的正常运营和普通用户的信誉。而且对于票据泄露事件的真伪,以及管理票据的企业部门的处理方式,被泄露和篡改后所带来的社会、政治上的消极影响不可估量。

因此,研究一种专门用来防止票据信息泄露或复制取证和恢复技术的逆向防御软件系统是有极有意义的。更重要的是提高对各种票据二维码信息泄露和篡改的分析与鉴别能力,能更好掌握真实辨别票据二维码信息泄露和篡改的实际技术,为有关安全部门提供分析依据。

1.2 二维码发展背景

国外二维码已经是一门发展的相当成熟的技术,在国外二维码技术最早在二十世纪80年代末开始。国外在对二维码技术研究探索方面,已经开发出了很多种的码制,当中最常见的码制有PDF417,QRcode,code49,CODE16K,codeone等,现在这些二维码编码标准已经在全世界范围内进行普及应用。

QRcode码又称快速响应矩阵码,是由日本于1994研制出来的一种二维码,它的主要优点是能够对中国的汉字和图像图片等多种信息进行表达,还具有信息处理速度快,可靠性高和防伪性高等优点。

中国的二维码产业起步较晚,我国对二维码的研究是从20世纪90年代初,最初是由中国物品编码中心对几种常用的二维码PDF417、QR Code、Data Matrix、Code one、Code 16K、Code 49的技术规范进行翻译和跟踪研究[2]。随着国内人员对二维码技术进行不断的创新,我国对二维码自主技术开始出现,并且得到了国家的支持。现在关于二维码技术的应用已经在我们生活中的各个方面体现出来了。

1.3 本课题主要研究内容及研究方法

1.3.1 研究内容概要

本课题研究的是如何通过扫描动车票中的二维码来获取信息的技术。系统基于实际票据二维码信息泄露环境下的篡改和取证恢复过程实现。面向专用的票据二维码信息泄露类型和手机或计算机取证恢复仿真环境。并使用Android 系统或C/C++语言实现一个包含票据二维码信息泄露和取证恢复的仿真系统(或采用其他熟悉的流行高级软件开发工具)。

系统应突出如何辨别票据二维码信息泄露和取证类型。即从各种技术分辨票据二维码信息泄露,以及能识别篡改技术的取证恢复手段。其次从具体事例分析票据二维码信息泄露和取证恢复技术的实际应用,设计一个有效的发现和分析软件技术来实现。

1.3.2 研究方法和步骤

(1)研究步骤:

1)软件的分析

二维码是什么,生成方式,以及二维码的种类。二维码的加密,加密可用的算法有哪些。二维码的解密,以及如何解密。可行性分析,对可能用到的技术进行学习、总结。

2)软件的设计

软件结构的设计,信息生成二维码的设计,二维码扫描处理信息的设计,二维码信息存储的设计以及对二维码其他功能的设计。

3)软件开发与维护

通过前期做的大量准备,开发环境的安装、部署、配置,着手软件开发工作。开发完成后,对软件进行测试及完善。

(2)方法与措施:

通过互联网和图书馆以及任何可用渠道得到的查找所需的资源。采取文献研究的方法,阅读基于Android技术的二维码的相关知识的书籍、期刊和论文等。并从文献当中梳理、归纳和查找材料相关研究成果的技术方法,并自主学习基于Android平台下的票据二维码中的信息获取与分析系统的所需要的技术和Java编程语言。学习研究整个软件系统的构建,学习软件系统开发环境,完成编码实现和软件系统测试。实现界面友好,满足时下主流手机的运行需要。

2 软件开发环境与技术理论

2.1 软件开发工具配置

本课题采用的开发工具配置如下:

(1)操作系统:Windows 7 ,Android。

(2)硬件配置:

1)计算机:笔记本电脑。

2)Android手机:android版本为4.0.4。

(3)系统采用eclipse工具软件进行开发,其中JDK为jdk1.7.0_07。

2.2 软件运行环境

(1)android模拟器运行环境

本软件运行在android模拟器的运行环境如下:

1)操作系统:Window xp或以上版本。

2)SDK版本:android 版本3.0(API 11)或以上版本。

(2)android手机运行环境

本软件运行在android手机上的运行环境如下:

1)操作系统:android版本 3.0或以上版本。

2.3 开发环境

2.3.1 Eclipse开发环境

Eclipse是很好的一个集成开发环境它具有可扩展且开源的优点,是以一切皆为插件作为它的设计思想,因为Eclipse的核心是非常小,所以所有的功能都是以插件的形式附加到Eclipse的核心上进行功能的实现。由于它是免费的以及它的种种优点成为了现在Java开发平台中的主流。

2.3.2 Android开发工具包

Android SDK(software development kit)软件开发工具包,是软件开发工程师开发的特定的软件包,软件体系结构,硬件平台,操作系统和应用软件的开发工具集。本课题通过Android开发工具包对软件进行开发设计。本课题主要运用Android SDK与Eclipse开发环境进行软件的开发设计。

2.4 Android的系统架构

Android是谷歌公司在Linux操作系统下开发的一款新的操作系统,因为Android系统是开源的,即Android系统是免费的,所以现在一些手机和平板电脑中都使用Android系统作为操作系统。本课题研究内容的是基于Android平台开发的。谷歌公司的Android平台架构图,如图2-1所示。

基于Android的票据二维的码中信息获取处理与分析系统_软件系统

图 2-1 Android平台架构图

2.5 Java编程语言

Java是一种面向对象的程序设计语言,是由Sun 公司于1995年推出,Java因为可以实现跨平台应用软件的开发自推出后就被广泛运用到各个平台,Java 具有语言简单、面向对象、跨平台、多线程、可移植性、动态、安全且与系统无关等优点,所以发展速度相当快。

本软件正是利用Java编程语言在Android系统平台上进行设计,采用Xml作为界面布局语言。Java作为编程语言,设计了基于Android平台的票据二维码获取与分析系统。

3 软件系统设计概要

3.1 软件开发目标

通过本软件的实现,能够对票据二维码中的信息进行获取与分析,还可将信息进行二维码生成,主要包括普通生成,RSA加密生成,AES加密生成,MD5加密生成等主要功能。本软件还能对经过本软件加密后生成的二维码进行解密,包括RSA解密以及AES解密。因为MD5算法是不可逆的,所以目前还不能实现很好的对MD5的解密。

软件使用者可以通过对软件中按钮的点击以及一些表单的选择等实现Android手机中软件的界面交互与功能使用,该软件将实现至少以下功能:

  • 票据二维码的读取识别。
  • 输入信息生成二维码图片。
  • 对输入信息进行加密生成二维码图片。
  • 对本软件中加密生成的二维码进行解密。
  • 3.2 软件设计原则

  • 界面友好原则,软件系统界面是软件与使用者信息交互的平台。软件界面质量的好与坏往往会影响使用者的心情以及软件的使用率。二维码软件使用时下流行的Fragment来设计界面,界面美观,操作性强。
  • 可修改性原则,软件系统开发中要求以科学的方法对软件进行设计,使软件有良好的结构和完善的功能,要求软件系统功能实现简单。二维码软件是通过xml文件和Activity文件一一对应的方式来实现界面的交互,修改起来很方便。
  • 效率性原则,使用者在使用软件的过程中,需要保证软件系统反应的及时性。如扫描一张二维码图片时,软件系统反应时间需要保证在用户的接受范围之内,不能让用户过久的等待。
  • 可测试性原则,软件系统开发完成后,使用者可以输入一些数据对软件的功能进行测试,排除软件自身的异常错误,保证软件系统得到全面的检验。二维码软件开发过程中采取了try{}catch{}来捕获异常,这样在软件的测试过程中能够很好的查找到出现了哪些异常,并且进行修改。
  • 可靠性原则,软件系统开发完成后,使用者再使用过程中会产生一些信息数据存储在手机中。随着数据增长,在数据提取时,必须确保提取的数据是可靠的,这样才可以正确的表达用户的用意。
  • 4 软件设计与实现

    4.1 软件的界面设计

    Android在3.0版本之后引入了Fragment的概念,其主要目的是支持更加动态和灵活的UI设计在大屏手机和平板电脑中。

    一个Activity中可以包含多个Fragment。一个Activity通过调用多个Fragment来创建一个多界面区域的用户界面。多个Activity也可通过重复调用某个Fragment来实现某功能,所以Fragment就相当于功能的模块化。Fragment有属于它自己的生命周期,可以像Activity一样监听属于它的输入事件并且进行响应,同时可以在Activity运行期间进行更改。

    作为一款软件,界面的美观往往影响到用户使用软件进行良好的体验。由于时下主流的手机都趋于大屏化,所以本软件运用了Android 3.0中引入的Fragment的概念。通过将各个Activity的布局分散到各个Fragment中,能够很好的实现界面的切换这样使界面变得跟美观,更加人性化。

    4.2 软件的系统结构

    本软件要求在Android系统中运行,用户通过操作Android系统调用二维码软件,二维码软件的计算结果返回到Android系统,Android系统再将软件处理的信息呈现给用户。软件总体操作图如图4-1所示。

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_02

    图 4-1 软件总体操作图

    本软件主要根据调用EncodingHandler类对输入信息进行二维码图片生成,并根据CaputureActivity调用照相机功能进行二维码识别读取[3]。软件总体设计图如图4-2所示。

    软件主要功能模块:

  • 普通生成模块,该模块主要是将用户输入信息进行生成二维码图片并显示。
  • RSA加密模块,该模块主要是将用户输入信息进行RSA加密后生成二维码图片并显示。
  • AES加密模块,该模块主要是将用户输入信息进行AES加密后生成二维码图片并显示。
  • MD5加密模块,该模块主要是将用户输入信息进行MD5加密后生成二维码图片并显示。
  • RSA解密模块,该模块主要是将经过RSA加密后的数据进行解密并显示信息。
  • AES解密模块,该模块主要是将经过AES加密后的数据进行解密并显示信息。
  • 其他功能模块,是在上面的基础上对功能进行进一步的加深。其包括个人名片的制作与识别、WIFI网络二维码制作与识别、模拟火车票的制作与识别。
  • 基于Android的票据二维的码中信息获取处理与分析系统_Android_03

    图 4-2 软件总体设计图

    4.3 软件所运用RSA算法、AES算法、MD5算法

    4.3.1 RSA算法介绍

    RSA算法作为一种公开密钥的算法已经经受过许多年的密码的安全性分析,虽然密码破译者不能证明该算法是否安全,但这表明,该算法具有一定的可信度。当前它仍然是最为流行的公开密钥算法。

    RSA公开密钥密码体制。公钥密码系统是采用加密和解密的密钥是不同的,是一个“由加密密钥推导出解密密钥已知的计算上是不可行的”密码。

    在公钥密码体制中,加密密钥(公钥)PK是公共的信息,和解密密钥(或密钥)SK是保密的。公开的加密算法的E和解密算法D,虽然密钥SK是PK决定,但不能从PK计算得到SK。RSA加密与解密过程图如图4-3所示。

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_04

    图 4-3 RSA加密与解密过程图

    大数分解难是RSA安全性的保证。公共密钥和私人密钥是一对大素数(100至200位十进制数或更大)的函数。只知道公共密钥恢复明文是非常困难的,这相当于两个大素数的乘积分解。

    本软件根据RSA算法原理将其应用于本软件二维码RSA加密与RSA解密的模块中,实现了对数据信息的加解密。

    RSA算法在本软件的运用实现中的核心代码如图4-4所示。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_05

    图 4-4 RSA算法核心代码

    4.3.2 AES算法介绍

    AES加密算法是密码学中的高级加密标准AES,也被称为Rijndael算法的加密方法。是美国联邦政府所采用的加密标准。本标准代替原有的DES,已经广泛应用在世界各个国家。经过五年的甄选流程,高级加密标准研究所(NIST)在2001年11月26日发布的并在2002年成为了一个有效的加密标准。

    AES 算法基于排列和置换运算。AES加密算法经过S盒变换、行变换、列变换种等方法来对数据进行1到9轮的变换最终得到加密的数据。AES解密算法经过逆S盒变换、逆行变换、逆列变换等方法来对数据进行1到9轮的变换最终得到明文的数据。

    AES算法是一个对称密钥的密码,与公共密钥密码使用密钥对不同的是对称密钥密码使用相同的密钥加密和解密数据。AES加密与解密流程图如图4-5所示。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_06

    图 4-5 AES加密与解密流程图

    本软件根据AES算法原理将其应用于本软件二维码AES加密与AES解密的模块中实现了对数据信息的加解密。

    AES算法在本软件的运用实现中的核心代码如图4-6所示。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_07

    图 4-6 AES算法核心代码

    4.3.3 MD5算法介绍

    MD5(信息摘要算法),由麻省理工学院计算机科学实验室和RSA数据安全公司联合开发出来的。是经过MD2算法,MD3算法和MD4算法改进创造出来的。主要是把大容量数据信息,用数字签名软件签署私人密钥之前被“压缩”成一个安全保密的格式。由于对MD5算法的使用无需支付任何费用,通常情况下MD5也是一个很好的加密算法,所以很多公司和个人都在使用。2004年8月17日,美国加利福尼亚圣塔巴巴拉国际密码学会议,中国山东大学的王小云教授是发表了关于破译MD5算法的报告,公布了MD系列算法的破结果。随后,MD5破译工程权威网站(http://www.md5crk.com)也因此关闭,并且宣布MD5加密算法已经不是一种安全的加密算法了。

    虽然王小云教授在发表了破译MD5算法的报告,证明了该算法不再安全。但是对于绝大部分的公司和普通用户来讲,从算法上来破译MD5目前还是相对困难的,因此MD5算法仍然是一种相对安全的算法。MD5算法是一个散列算法,通过输入两段不相同的明文信息是得不到相同的输出信息的,根据输出信息,不能退出数据的原始的明文信息,即一一对应的关系。MD5算法过程不可逆,所以要想要破译MD5算法加密后的信息只能使用穷举法,就是将可能出现的明文信息,用MD5算法散列加密之后得到散列数据值和原来的值进行一一对比。比对成功即可知道信息的明文信息。不过这是一个很费时费力的过程。

    MD5算法使用512位分组来处理输入的数据信息,每个分组又经过为16个32位子分组的划分,在经过了一系列的数据处理加工后,算法的数据输出是由四个32位分组组成,并将它们级联后生成一个128位散列值。MD5算法的整体流程图如图4-7所示。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_08

    图 4-7 MD5算法的整体流程图

    本软件根据Md5算法原理将其应用于本软件二维码Md5加密模块中实现了对数据信息的加密。

    MD5算法在本软件的运用实现中的核心代码如图4-8所示。

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_09

    图 4-8 MD5算法核心代码

    4.4 软件模块设计

    4.4.1 二维码图片扫描读取模块设计

    本软件是通过扫描二维码图片来得到二维码中的所有信息,二维码扫描识别过程主要包括对图片的定位和预处理[4]。因此扫描需要调用手机照相机的功能。CaptureActivity在设计中采取FrameLayout布局来实现对照相机扫描功能的实现。在设计扫描功能时用到了摄像头的自动对焦功能,这样就可以很快的读取二维码图片中的信息[5]。

    二维码扫描读取模块中核心代码如图4-9所示。

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_10

    图 4-9 二维码扫描读取模块核心代码

    4.4.2 二维码图片生成模块设计

    二维码的生成主要是通过EncodingHandler类,当前端将需要生成二维码图片的信息和二维码的宽和高分别以字符串类型参数和整型参数的形式传递给 createQRCode方法,根据设定的二维码宽和高的值通过循环用画笔在画布中绘出二维码图形,最后生成Bitmap类型的二维码图像对象[6]。

    二维码图片生成模块中核心代码如图4-10所示。

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_11

    图 4-10 二维码生成模块核心代码

    5 软件系统测试

    5.1 二维码图片扫描模块测试

    运行二维码软件,如图5-1所示为软件开始界面,点击右上角的照相机按钮即可打开如图5-2所示为跳转到扫描界面及扫描结果。该界面代码在OneFragment类中,主要通过按钮的监听事件来完成功能的实现[7]。包括摄像头自动对焦功能的调用,通过Dec odeHandler类的解码功能将二维码中的信息显示到文本中。

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_12

    图 5-1 软件开始界面

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_13

    图 5-2 扫描界面及扫描结果显示

    在该模块中运用到技术有打开手机摄像头功能,通过扫描二维码按钮的点击事件触发打开照相摄像头Intent跳转到信息捕获类并调用类中handleDecode(Result result, Bitmap barcode)方法可以将扫描的图片的信息识别出来至扫描结果文本中。扫描的结果若满足个人名片格式的要求就可以通过Intent.ACTION_INSE RT调用Android系统自带的插入联系人功能添加联系人的信息至手机中[8]。若扫描的结果满足火(动)车票的特征码要求,即可显示火(动)车票的票号信息,由于火车票的信息现在属于加密的,不知道它是通过什么加密算法生成的。只能扫描出它经过加密后的信息,对于其加密前的信息暂时是无法获取的。

    在对火(动)车票的信息进行研究的过程,扫描二维码将出现加密后的144位(0-9)的数字,在144位数字中找到一些规律,第一,二两位的值表示一个英文字母,数值(00-25)代表英文的(A-Z)。第三位到第八位表示的是火(动)车票的票号,对剩下136位数值,因为找不到一定的规律。所以目前只能知道火(动)车票的票号,其他的内容有待进一步的深究。

    5.2 二维码图片生成模块测试

    二维码图片生成的模块界面,如图5-3所示。通过输入信息对数据进行普通的生成和 RSA数据加密生成如图5-4所示。通过输入信息对数据进行AES数据加密生成和 MD5数据加密生成如图5-5所示。该界面代码在TwoFragment类中,主要通过输入信息经过 EncodeHandler类的编码功能将信息生成二维码图片[9]。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_14

    图 5-3 二维码图片生成的模块界面

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_15

    图 5-4 普通的生成和 RSA数据加密生成

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_16

    图 5-5 AES数据加密生成和MD5数据加密生成

    在该模块中运用到技术有二维码图片的生成技术,用户可以输入自己想要生成二维码的信息并且通过EncodingHandler类的createQRCode(contentString, 350)方法进行编码后信息用画图到qrImgImageView控件形成图片[10]。同样通过EncodingHandler类中CreateQRCode方法对经过RSA加密、AES加密、MD5加密后信息进行编码后画图到qrImgImageView控件形成图片。

    5.3 其他模块测试

    5.3.1个人名片二维码生成

    个人名片二维码图片生成的模块界面,如图5-6所示,通过输入个人信息对数据进行二维码图片生成。点击左上角的名片按钮即可添加到联系人里,如图5-7所示,点击右上角的分享按钮即可将生成的二维码图片分享给好友,如图5-8所示。该界面代码在ThreeFragment类中,主要通过输入个人信息经过 EncodeHandler类的编码功能将信息生成二维码图片。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_17

    图 5-6 个人名片二维码图片生成模块

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_18

    图 5-7 添加到联系人

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_19

    图 5-8 生成的二维码图片分享

    在该模块中运用到技术有二维码图片的生成技术,用户通过输入个人名片信息生成二维码图片。实现的方法和二维码生成模块方法类似。其中通过名片按钮触发事件Intent.ACTION_INSERT调用Android系统自带的插入联系人功能添加联系人的信息至手机中[11]。分享按钮事件调用自己编写的FileService类FileService.saveImage方法将图片保存到sd卡的saving_picture文件夹中并且通过FileService.shareMsg方法将图片分享给好友。

    5.3.2 二维码WIFI网络生成

    二维码WIFI图片生成的模块界面,如图5-9所示,通过输入无线WIFI信息点击右上角的生成二维码WIFI。生成的WIFI二维码图片和扫描后的结果,如图5-10所示,选择连接WIFI即可连接上指定WIFI热点。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_20

    图 5-9 二维码WIFI图片生成的模块界面

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_21

    图 5-10 生成的WIFI二维码图片和扫描后的结果

    在该模块中运用到技术有二维码图片的生成技术和扫描识别技术,用户通过WIFI的信息生成二维码图片。实现的方法和二维码生成模块方法类似。通过扫描WIFI二维码图片将弹出一个询问对话框。如果WIFI热点时可用的即可实现连接指定WIFI上网。

    本人通过对国外一款二维码扫描软件的研究,发现其中有一个可以生成无线WIFI二维码的生成,通过对WIFI二维码图片中的原始信息进行分析,发现了WIFI二维码中的一些特征其形式为“WIFI:S:网络名;T:类型名;P:密码;;”存储着WIFI的信息。根据这个发现,本人模仿国外的这款软件实现了手机实现WIFI二维码的生成功能。同时根据这个特性开发了对WIFI二维码的扫描功能。

    经过测试,本软件的WIFI二维码扫描功能可扫描国外二维码软件产生的WIFI二维码实现连接上网,也可以扫描本软件的WIFI二维码生成的图片实现连接WIFI(前提是此WIFI热点可用)。

    经过测试,本软件的WIFI二维码生成功能生成的二维码图片也可被国外的那款软件识别连接上网。还可以被快拍二维码软件识别实现连接WIFI上网(前提是此WIFI热点可用)。快拍二维码软件扫描结果如图5-11所示。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_22

    图 5-11 快拍二维码软件和扫描后的结果

    5.3.3模拟火车票二维码生成

    模拟火车票二维码图片生成的模块界面,如图5-12所示,通过输入火车信息和乘客信息即可生成二维码。生成火车票信息的二维码图片和扫描后的结果,如图5-13所示。该二维码图片经过AES加密,并通过AES解密出结果。该界面代码在TraincreatedActivity类中,主要通过输入火车与乘客信息经过 EncodeHandler类的编码功能将信息生成为二维码图片。扫描二维码图片通过调用通过 DecodeHandler类的解码功能将二维码中的信息显示到文本中。

    基于Android的票据二维的码中信息获取处理与分析系统_Android_23

    图 5-12 模拟火车票二维码图片生成的模块界面

    基于Android的票据二维的码中信息获取处理与分析系统_Android_24

    图 5-13 生成火车票信息的二维码图片和扫描后的结果

    5.3.4 从联系人中创建二维码分享

    软件通过调用手机的联系人信息到功能页面中,如图5-14所示,通过选择联系人即可跳转到联系人生成二维码界面,如图5-15所示。该界面代码在ContactsActivity类中。

    在该模块中使用联系人类中的getPhoneContacts()方法获取手机中的联系人信息。创建一个myAdapter适配器将手机的联系人信息传入到ListAdapt适配器中,再通过对Listview列表进行点击响应setOnItemClickListener事件将所选的联系人信息进行二维码图片的生成。并可通过分享按钮对生成的图片进行分享。

    基于Android的票据二维的码中信息获取处理与分析系统_软件系统_25

    图 5-14 调用手机的联系人信息到功能页面

    基于Android的票据二维的码中信息获取处理与分析系统_Android_26

    图 5-15 联系人生成二维码界面

    结论

    本论文是对票据二维码的信息获取处理与分析系统的设计进行整体分析,对二维码图片的生成和二维码图片的读取识别进行了研究,同时对二维码信息的加密和二维码信息的解密进行探索。通过RSA算法,AES算法,MD5算法实现了二维码信息的加解密。还有实现了一些关于二维码实用性的应用,如WIFI二维码功能及个人名片二维码分享等功能。本论文首先对软件的开发背景进行介绍,说明了本课题的目的及意义,通过研究Android技术和二维码的知识,对二维码图片在Android手机上的实现进行了深入的了解和研究。

    本软件设计初期是想制作一款可以破译现在火(动)车票中的二维码图片中的信息。在了解二维码图片的生成原理之后,一张二维码图片里描述内容是固定的。火(动)车二维码中的信息是将原始信息经过加密后的信息再生成二维码图片,所以我们只能得到加密后的信息,要想知道原始信息就需要得到其加密的算法。因为不知道动车中的票据二维码的加密算法,所以破译几乎是不可能的。即使破译了代价也是巨大的,后期根据这种原理添加了模拟火车票的二维码生成功能模块。

    在软件的设计过程中,由于初次接触Android,对于Android的一些应用和使用方法不太了解。所以花了很多的时间来学习Android的技术并熟悉Android程序的编程环境。在林老师指导和同学的帮助下,渐渐的实现了软件的设计。在制作软件的过程中,遇到了一些的问题,例如二维码图片的加解密实现,以及如何调用Android系统中服务实现功能。这让我体会到在遇到困难时我们要学会如何去解决而不是选择放弃,最终问题还是得到了解决,虽然软件还存在界面不够美观,功能不多的不足,但在以后的设计中,我会对其进行完善。


    参考文献

    [1] 张燕蕾.二维码技术及其在数字图书馆中的应用探析[J].现代情报,2007,(06):14-25.

    [2] 盛秋康.二维码编解码技术的研究与应用[D].南京:南京理工大学计算机应用技术系,2012.

    [3] 付峥.智能手机二维码识别系统设计与实现[D].西安:西安电子科技大学计算机科学与技术系, 2011.

    [4] 牟金进.基于手机平台的二维码物品信息管理系统的设计与实现[D].北京:北京交通大学电子信息工程系,2012.

    [5] 孙晓瑜,王荣宗.国外手机二维码技术在图书馆中的应用及启示[J].图书馆学研究,2011,(12):18- 26.

    [6] 徐玲,蒋欣志,张杰.手机二维码识别系统的设计与实现[J].计算机应用,2012,(08):22-23.

    [7] 王梦楠.手机二维码在纸质媒介中的发展现状探究与前景展望[J].中国传媒科技,2012,(10):11- 21.

    [8] Deepti Virmani,Meenal Gupta,Harish Dureja.Bar code:An Overview[J].Pharmaceutical Reviews,2005,(31):44-55.

    [9] 张轩瑜.基于Android的游戏购物平台的设计与实现[D].长沙:湖南大学软件工程系,2012.

    [10] 陆磊.智能手机平台下的二维码验证系统设计与实现[D].南京:南京航空航天大学计算机应用技术系,2012.

    [11] 高彦受.QR二维码的安全实现与设计分析[D].南京:南京理工大学应用数学系,2013.

    致谢

    时间过的很快,大学生涯也即将结束了,在老师和同学的帮助下,我很顺利的完成了本专业的所有课程。我真诚的感谢那些帮助过我的人。

    本论文在林柏钢导师的悉心指导下顺利的完成了。从毕业设计的选题、设计,和软件开发中遇到的问题的解决都离不开林柏钢老师的细心指导。林老师的博学和精益求精的精神让我受益颇多。在毕业设计这个阶段,林老师在百忙之中都能抽出宝贵时间给我们的毕业设计提出宝贵的意见和指出我们不足的方面。这不但让我巩固了所学过知识,而且还对知识的应用取得进一步的提升。再次向林柏钢导师报以崇高的谢意。再者,感谢我们大学中授予我知识的所有老师,感谢你们给了我知识。在我遇到学习问题的时候你们知无不言,孜孜教导,使我学到了许多的知识。

    感谢我的组员,在毕业设计中互帮互助,共同进步。在组员的帮助下我的毕业设计才得以很好的完成,对他们的帮助表示衷心的感谢。

    由于时间的原因及自身专业水平能力有限,论文中可能存在不足的地方和错误。恳请老师给予指正,感激不尽。

    上一篇:基于android的资源文件管理器
    下一篇:没有了
    网友评论