




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于DES算法的二维码扫描的实现摘要:随着手机Android系统的普及和信息化水平的提高,手机二维码扫描功能在我国已经为人们广泛的认识和接受,人们的生活和工作中对于二维码的运用也越来越频繁。本文通过eclipse软件设计了一项依托于安卓手机系统之上,利用安卓手机的摄像功能和二维码编码与解码的原理,以及DES加密算法的相关知识,实现二维码生成、加密与识别、解密的系统。该项设计内容包括三块:二维码的生成、安卓系统二维码的扫描识别系统设计与数据的加密解密的实现。二维码的生成系统完成了从数据输入、加密到生成相应二维码的功能,识别系统完成对采集到的二维码符号进行译码、解密并还原出所携带信息的功能。关键词:Android手机系统;二维码生成;二维码识别;DES加密解密The QR Code scanning System Based on DESJiang DongyangAbstract: As the universe of the Android mobile phone system and the development of the informatization level, the using of the QR Code recognitions function is more and more frequent. Through this thesis the Eclipse software designs a system which enables the QR Code generation and recognition system, on the basis of android camera, the principle of coding and handling code, and the relevant knowledge of DES. This design covers three parts: Android QR code encryption design, QR code identification system design, and mobile phone user login system design. Generating system from the function of the input data to generate the corresponding QR code, collected in recognition system to complete the QR code symbol decoding carried by deducing the function of information.Key Words:Android mobile phone system; QR Codes Recognition; DES encryption and decryption目 次1.1 系统研究的目的和意义 11.2 国内外研究情况及背景11.3 可行性研究31.4 本文研究内容32 开发相关技术介绍42.1 Android平台介绍42.2 开发环境的搭建42.3 二维码的介绍52.4 DES加密算法介绍73 系统分析与设计73.1 系统框架设计73.2 数据加密与二维码生成模块73.3 二维码扫描识别与数据解密模块84 系统的实现84.1 系统的主要流程84.2 数据加密与二维码生成模块的实现94.3 二维码扫描识别与数据解密模块的实现114.4 Android Camera的调用175 系统调试及测试175.1 系统调试175.2 系统测试175.3 测试结果175.4测试阶段复审与评价17结 论18参 考 文 献19致 谢201 绪论1.1 系统研究的目的和意义随着智能手机的普及和信息化水平的提高,在面对一维码信息容量低、数据库依赖程度深的背景下,二维码以其高容量性、高可靠性的优点被人们接受。二维码作为一种全新的电子信息存储、传递与识别技术,其运用前景也越来越广阔,在我国二维码技术被广泛运用于电子商务、物流管理、电子凭证等诸多领域。本文提出了基于隐私数据的二维码存取技术,重点研究了Android手机平台上隐私数据的二维码生成与扫描识别,将信息的加密解密与二维码技术结合起来。一维码的信息容量小,这也决定了它必须依靠数据库才能充分表达信息。因此如果没有数据库或者无法连接网络,一维码的使用就会受到极大的限制。此外,用一维码来表示汉字,需要繁琐的转化,效率不高。 二维码是为了解决一维码无法解决的问题而被研制出来的。二维码具与一维码相比,增加了多个定位点和容错机制。容错机制能够在无法识别全部二维码的时候,通过几个定位点,就还原出二维码所包含的全部信息。二维码的生成与开发较为容易,因而不同公司可能有多个不同种类的二维码,而这些二维码往往也具有不同的数据表示结构与识读方法。一般的二维码是通过三个定位点来进行辨识的。而二维码的自动校准方向也是通过这三个定位点实现的,所以从任何方向扫描二维码都是可以被识别的。容错机制则实现了不完全读取的功能,在无法读取全部条码或者条码被损毁的情况下,也能够正确地还原二维码包含的数据。因为二维码的安全性较高,用二维码容纳信息的安全保障性较好。二维码是大容量、高密度性信息进行存储、携带与识读的高效方法。手机二维码实现的主要功能有两种:一是识读,识读是借助基于二维码识别系统的相关应用识读出条码所包含的信息,通过识读二维码可以在浏览器打开二维码内的链接,从而进行网上浏览、网上购物、信息查询等多种活动;二是身份登录,是由服务提供者向通过认证的用户发送含有身份认证信息的二维码,用户通过二维码读取设备对二维码进行扫描识别,从而实现身份识别的功能,可以作为电子凭证使用。 1.2 国内外研究情况及背景1.2.1 国内外发展现状国外的二维码编码解码技术的开发起源于1980年,一些科研机构研究出了多种二维码图形的编码码制。而国际自动识别制造商协会、美国标准化协会则完成了QRCode、PDF417、CodeOne、Code16K、Code49等码制的符号标准。国际电工委员会的条码自动识别技术委员会则制定了QRCode的国际标准,并且沿用到现在。而西方国家在二维码的扫描识别方面,对于相关设备的设计制造和生产拥有一套成熟的技术。各类二维码的应用系统广泛传播。早在1993的时候,中国就开始进入二维码领域,对常用的几种二维码技术进行了分析与研究。随着现代社会的迅速发展和相关电子产业的爆炸式增长,电子厂商对二维码这种新技术的需求也与日俱增。1.2.2 二维码加密算法运用的的背景随着智能手机的普及以及信息化的发展,二维码的实用性越来越为人们青睐,利用二维码进行信息读取和用户登入已经十分普遍。但是由于二维码技术的门槛较低,并且二维码的编码与解码技术已经非常成熟,违法分子利用二维码来传播病毒并进行犯罪活动,而一个二维码内是否具有安全隐患,从其外表上是难以辨别的,这些都严重威胁了社会的信息安全和人们的财产安全。面对二维码存在的漏洞与隐患,信息部门技术的完善与用户自身防范意识的提高都很重要,但是这些只能治标。唯有从数据本身着手,开发带有安全认证的扫码技术,才能有效防患于未然。因此,数据加密技术的运用势在必行。在密码学中为了防止一个密码被发现内在规律而破解,密码的生成必须具有随机性,但是加密的方法也与所需加密的数据量的大小相关。DES由于需要进行16轮迭代置换,因此在对小数据量数据进行加密时具有明显的优势,而QR码的是以二进制数据0与1进行编码的,数据量较小,在满足数据加密的要求时,是比较经济的选择。1.2.3 加密算法的发展历史随着社会的进步,对于信息保密的要求也不断提高,加密算法也处于不断地发展完善中。早在公元前400年,古希腊人就发明了艾奈阿斯绳结等置换密码;第一次世界大战时,对于无线电信息的保密使得人们再次重视密码学;在第二次世界大战时,德军使用的“恩尼格玛”密码机,是密码学的再次实践应用;而20世纪末的时候,美国国家标准局公布实施的“美国数据加密标准”,就是现在DES加密算法的由来。1.2.4 加密算法的分类加密一般分为三类,分别是消息摘要算法、对称加密算法和非对称加密算法。(1)消息摘要算法消息摘要算法是输出固定格式与长度的密文的一种算法,与输入端数据的大小无关,经过加密后输出的密文的长度是一定的。消息摘要算法的原理是根据一定的规则对输入的数据进行有规律的提取,被提取的数据内容与原数据有对应关系,原始数据改变,则输出密文就相应变化,因此这种算法数据的保密性很高。但是,因为输出密文长度的既定性也使得其无法还原为初始数据,是不可逆的,因此消息摘要算法一般只用来对数据的完整性进行验证。经过不断的发展完善,现在的消息摘要算法主要有MD4、MD5、SHA等几种,其中MD5算法的运用最广泛。单向散列函数MD5是公认的强度最高的加密算法,是在解决MD4冲突的漏洞的基础上发展而来的。(2)对称加密算法对称/不对称加密算法与其他算法的区别在于密钥“key”的运用。对于以往不用密钥,以固定规律变换字符串形成密码来传输消息,一旦密码变换规则被破解,那么产生的结果往往是灾难性的,二战时日本中途岛的惨败就是由于这点。而在对称加密算法中,其安全性取决于key的长度,破解难度很高。数据发送端将数据明文与密钥通过加密算法进行加密,把加密后的密文发送出去。接收方收到密文后,使用发信方的密钥及相同算法对应的逆算法对密文进行解密,就能把密文恢复成能够识读的明文。在对称加密算法中,数据的加密和解密使用的是相同的密钥,数据的保密性完全取决于密钥的安全性。【1】对称加密算法主要有DES、IDEA、AES、RC4、RC5等,其中DES算法是最常用的加密算法。(3)非对称加密算法非对称加密算法的加密过程是单向的,即发信方将明文通过“公钥”加密后传输给收信方,收信方则用“私钥”进行解密,把密文恢复成能够识读的明文。而信息一旦加密,则 “公钥”也无法进行解密,这样即使数据在中途被人拦截,入侵者也无法对其进行破解,只有“私钥”的持有者才能识读信息内容。非对称加密算法现在常用的是RSA算法。1.3 可行性研究一项设计的实现必须分析它的需求与可行性,而如果这项设计有深远意义却在技术与系统上难以实现,那么这项设计就不能称之为有意义的设计。本文结合类似的实例,主要从社会、经济、技术与操作四个方面讨论该项设计的系统开发可行性。1.3.1 社会可行性本设计实现了让用户通过账号登录方式扫描识别二维码的功能,并且具有操作简单 、界面友好的特点,可以使人们深入了解Android手机二维码扫描识别功能实现的过程。1.3.2 经济可行性目前二维码在国内已经引起用户的广泛关注,许多相关研究工作已经展开,作为一项发展前景远大的技术,资金的投入并没有问题,而本项设计的实现基于普通PC和Android手机,对硬件与系统要求都不高,成本低廉。从经济可行性分析来看是可行的。1.3.3 技术可行性本设计以应用和实用为主,选择了Java语言作为开发语言,Eclipse作为开发环境,并且二维码扫描与识别技术作为一项前景广阔的技术,目前在国内外得到长远发展,有较成熟的技术,技术上是完全可行的。本设计综合考虑了数据加密的相关原理和数字图像加密方法与优缺点之后,研究了对数据进行加密解密的方法,与二维码的结构特征和生成、扫描识别方式,通过Java程序的设计,实现DES加密算法与二维码加密的有机统一,来确保其安全性与保密性。1.3.4 操作可行性本设计只需要一台Android智能手机安装应用并进行二维码的扫描识别,操作方便可行。1.4 本文研究内容本文研究的内容如下:(1) 对系统进行需求和可行性分析;(2)检验信源数据的格式规范,基于DES加密算法,利用密钥对其进行加密;(3)二维码识别软件的设计与运行试验;(4)分析系统实现与设计的优点与缺点,查漏补缺,完善系统;(5)分析开发工具的功能,实现设计的目标。2 开发相关技术介绍2.1 Android平台介绍Android平台是由Google和几十个手机公司在内的开发行厂商联盟组织Open Handsets Alliance开发设计出来的,它的目标是以较低的设备研发成本等,开发出一种具有优良用户界面的程序。出现已有十几年历史的Symbian系统渐行渐远,而Windows mobile如今也鲜为人知,未来手机的操作系统需要一个稳定的物理层来支持,更需要互动型、灵活的设计环境。由于设计理念的不同,相比于iPhone是由厂家设计、工程师来实现的特点,Android的开源性本质使得其具有了很多iPhone不具有的优势。在Android上发布应用程序不需要任何的许可;而Android平台也并没有任何隐藏与权限的设定,API对所有人都是透明的;这也意味着所有人都可以自由修改、完善Android的系统组件。Android系统是一种基于Linux操作系统的灵活的、开放源代码的操作系统。Android系统的系统架构类型是分层架构,分为应用程序层、应用程序框架层、系统运行库层和Linux内核层。Android系统的基础为四大组件,分别是Activity、Service服务、Content Provider内容提供者以及Broadcast Receiver广播接收器。【2】而随着Android系统的不断发展,可以运用Java等多种编程语言开发Android系统。Android系统架构如图1所示。ApplicationApplication FrameworkLibraricsAndroid RuntimeLinux Kernel图 1 Android系统架构图2.2 开发环境的搭建2.2.1 先期环境搭建(1)Android开发环境搭建首先安装Java开发环境,安装文件jre-8u40-windows-x64.exe,下载并解压adt-bundle-windows-x86_64.rar文件,打开adt-bundle-windows-x86_64eclipseeclipse.exe,环境搭建完毕。(2)Java开发环境下载并解压eclipse-SDK-win32.rar文件,打开Eclipse软件。(3)导入Zxing二维码的源码导入系统,打开源码中的Android项目,将core.jar文件加入项目。2.2.2 Eclipse开发平台介绍本设计中二维码的识别是通过32位windows操作系统上Eclipse开发平台搭建开发环境,运用Java语言对二维码的扫描功能进行设计开发,进而在PC上开发出二维码扫描识别的Java程序来进行二维码的识别。Eclipse IDE安装的ADT插件为我进行Java程序的设计与系统的开发搭建了良好的平台。Eclipse是一个附带了标准的插件集的一个框架与一组服务。插件集中则包了JDK(即含Java开发工具)。2.2.3 Base64编码方式在本次的设计过程中,发现对密文进行编码后,会出现乱码的情况,推测是编码方法的原因。试用unicode、Base64等多种编码方法后,发现采用Base64编码方法对密文进行编码后不会出现乱码。Base64是一种基于64个可打印字符来表示二进制数据的表示方法,是网络上最常见的一种用于传输8Bit字节代码的编码方式。2.3 二维码的介绍二维码是在条码技术的基础上发展而来的,是在一维码难以满足用户电子识别需求的环境下产生的。由于一维码信息容量较低,其往往只能实现对物品的标识,而二维码则不然,相对于一维码信息容量低、数据库依赖性较大、安全性不高的不足,通过逐步的发展完善,二维码具有了高密度、信息量容量大、编码范围广、安全性高、读取率高、具有纠错功能、保密性、防伪性好、成本低、易制作等优点。同时二维码还能够对信息的整体进行容错识别,也能对图形的旋转变化进行矫正处理。由于二维码能够在横向和纵向两个维度上进行信息的存储与表达,因而能够以手机摄像框所包含的小区域来表达大量的信息,实现其高容量的信息容纳功能。 2.3.1 二维码的原理二维码是用特定的几何图形按一定规律在二维方向上分布的黑白相间的矩形方阵记录数据符号信息的新一代条码技术,它是由一个二维码矩阵图形和二维码号组成,有些还包含说明文字。【3】二维码是通过摄像头等图像采集设备进行输入,进而对信息进行自动处理。2.3.2 二维码的分类二维码通常分为堆叠式和矩阵式二种类型。(1)堆叠式二维码又称为行排式二维码,其编码的原理是在一维码的基础上,将多行截短的一维码按需要堆叠成二行或多行。主要有PDF417、CODE49、CODE 16K几类。 (2)矩阵式二维码又称为棋盘式二维码。其编码的原理是在一个矩形空间里通过黑、白像素在矩阵中的不同分布进行编码。【4】在矩阵相应元素位置上,用点的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列方式表示二维码的内容。主要有:QR Code 、Data Matrix、Maxi Code、Code One几类。2.3.3 QR码的介绍QR码是在1994年的时候由日本的Denso公司研究发明的一种矩阵式二维码。在各类二维码中,QR码的运用范围与频率最广。(1)QR码的简介图2 QR码结构图QR码又称为快速响应矩阵,就是人们常说的快速响应码,全文是Quick Response Code。QR码结构图如图2所示。(2)QR码的结构与特性QR码除具有信息容量大、可靠性高等一般条码所具有共性特点外,还具有能够在二维(横向与纵向)上存有信息、识读速度快、数据密度大、占用空间小的主要特点。相比于一般的条码只能单方向包含有信息,QR 码能够在二维尺度上容纳信息,这也解释了为何QR 码包含的信息比一般性条码要多。QR Code全称Quick Response Code,译为快速反应条码,这也直观地说明了QR码超高速识读的特点。【5】这也是它区别于一般二维码的主要特性。使用条码识读设备读取QR码的时候,单位时间内(秒)能够读取并且识别包含3000个字符的QR码符号,而其他种类的二维码的读取识别速度则远远慢于QR码。QR Code码还具有全方位识读的特点。识别QR码的过程中会将具有一定旋转角度的QR码作旋转处理,它的信息读取则是通过QR码的位置探测图形来进行自动识别,用硬件来实现的,因此,信息识读过程所需时间很短。因为日本的文字中大量存在着汉字,因此QR码在设计之初就已经实现了汉字的支持系统。QR码表示汉文是通过特定的数据压缩模式来实现的,而其他二维码表示汉字的形式是通过字节实现的,相比较而言,用QR码来表示汉字的效率更高。2.4 DES加密算法介绍DES全称Data Encryption Standard,即数据加密标准,是一种使用密钥加密的分组加密算法,属于对称加密算法。DES加密算法的安全性源于它的密钥,因此在使用时密钥的强弱决定了所加密数据的安全性与保密性。2.4.1 DES概况DES算法是一种分组密码,是将明文分组后进行分别加密的一种算法。DES加密算法入口参数包含Key、Data和Mode三种。Key是密钥,DES算法中加密与解密的密钥是一样的,唯一的区别是加密与解密所使用的子密钥的顺序相反;Data是要进行加密、解密处理的数据;而Mode则是DES的工作方式,即加密、解密。2.4.2 初始置换DES算法以64比特位为基本单位,把输入的64位的明文变为64位的密文输出出来,它使用64位的密钥。DES加密算法的置换规则是将按一定的规律将64位输入块进行一次线性变换,把输入的64位块按位重新组合,换位输出后,把输出的64位分为L0、R0两部分,每部分长32位,L0是输出的左32位,R0 是右32位。然后在密钥的控制下,经过了16次迭代运算。第一次置换的具体流程是:首先把输入的第58位数据换到第1位,然后把第50位数据换到第2位,.,依此类推,第64位是原来数组的第7位数据。2.4.3 逆置换DES解密是加密算法的逆置换,是经过16次的迭代加密运算后,将所得的L16、R16进行逆置换,得到的密文为输出端。3 系统分析与设计3.1 系统框架设计二维码系统有两个模块:数据加密与二维码生成模块、二维码的扫描识别与数据解密模块。本设计中二维码的生成是通过在草料网实现的,而二维码的加密与识别则是在SDK、Eclipse等多种开放源代码的java开发平台上实现的。在二维码的扫描识别过程中调用了手机的相机功能来扫描条形码,而摄像功能还运用了自动聚焦、错误容纳等模块。而在二维码的识别过程初始,还运用了用户登录相关的DES加密算法等技术。3.2 数据加密与二维码生成模块3.2.1 数据加密模块该部分设计的运行步骤如下:(1)用户输入一段文本(本设计中定为字符串);例如:本设计中输入字符串“admin/123456/192.168.1.1”。(2)设置DES加密算法的置换规则; (3)检测输入参数格式是否正确,错误直接返回空值(null);(4)将用户输入的密钥选择为加密的初始密钥;(5)执行加密操作,并且返回加密后的数据;3.2.2 二维码生成模块二维码的生成已经有很多成熟的应用,而自行制作成本较高,因此本设计借助现有的开源项目,直接使用在线的Zxing中相应的编码包。本设计中是将加密后的密文在草料网上转化为二维码。3.3 二维码扫描识别与数据解密模块调用Android的手机摄像头功能,进行对QR码图像数据的采集,获取摄像头数据并且将图像数据转化为计算机可以识别的位图像素数据,从而方便系统进行解码。首先打开主类CaptureActivity,并启动CameraManager摄像头管理类采集图像,然后利用CaptureActivityHandle类对图形进行解码处理,接着利用DecodeHandle类对数据进行解码和传送,最后在handleDecode中得到并查看二维码中的原始数据。而解码的真正入口是CaptureActivity的Handle里面的。(1) 用户对二维码图片扫描后,将接收到处理模块发送的数据发送到解码模块;(2)根据加密使用的密钥,进行相应的解密;(3) 对所的信息进行纠错处理,然后显示内容。4 系统的实现4.1 系统的主要流程将设计的应用BarCodeTest.apk在Android智能手机上进行安装,用户进行账号密码的登录,然后开启摄像头功能并进行图像采集,将图像显示在手机屏幕中间。用户将手机对准要扫描的二维码,然后开始识别。如果二维码识别成功并且所识别的二维码编码有效,则显示识别后的二维码信息;如果识别失败则发出提示音提醒用户并且选择重新扫描或者返回。系统流程图如图3所示。显 示 文 本 信 息图 像 处 理 、矫 正、译 码开 始调 用 相 机 功 能采 集 条 码 图 像图 像 预 处 理读 取 数 据图3 系统流程图4.2 数据加密与二维码生成模块的实现4.2.1 数据加密模块的实现DES加密算法(1)构造DES加密的函数,并初始化密钥。public DES(String key)this.key = key;(2)输入参数后,先对参数格式的正确性进行检测,如果错误就直接返回空(null)。private byte UnitDes(byte des_key, byte des_data, int flag) if (des_key.length != 8) | (des_data.length != 8) |(flag != 1) (flag != 0) hrow new RuntimeException(Data Format Error !);(3)首先设置好DES加密算法的置换方法。初始化密钥数组,并进行PC-1、PC-2、置换。例如:对密钥进行PC-1变换,并生成生成子密钥keyarrayijprivate void KeyInitialize(int key, int keyarray) int i; int j; int K0 = new int56;for (i = 0; i 56; i+) K0i = keyPC_1i - 1; for (i = 0; i 16; i+) LeftBitMove(K0, LeftMovei);for (j = 0; j 48; j+) keyarrayij = K0PC_2j - 1; 4)当dest和src两个都不为空时,将源数组src组件的子序列复制到引用的dest目标数组中。ublic void arraycopy(byte src,int srcPos,byte dest, intdestPos,int length)if (dest != null src != null) byte temp = new bytelength;for (int i = 0;i length;i+)tempi = srcsrcPos + i;for (int i = 0;i length;i+)destdestPos + i = tempi;(5)加密算法设计。对原始数据长度进行检测,原始数据长度不满四位的加0补满四位,并且保证原始数据的前4位为该数据的长度。key是密钥,data是要处理的数据,flag 1为加密,0为解密,return 处理后的数据。public byte encrypt(String data) throws UnsupportedEncodingExceptionString dataLength = data.length() + ; if (dataLength.length() = 1)dataLength = 000 + dataLength;else if (dataLength.length() = 2)dataLength = 00 + dataLength;if (dataLength.length() = 3)dataLength = 0 + dataLength;StringBuffer sbDate = new StringBuffer();sbDate.append(dataLength);sbDate.append(data);byte bytekey = key.getBytes();byte bytedata = sbDate.toString().getBytes();byte result = new byte(bytedata.length + 8) - (bytedata.length % 8);result = DesEncrypt(bytekey, bytedata, 1);return result;图4 数据的DES加密结果图(6)输入端信息的的DES加密如图4所示。4.2.2 二维码生成模块图5二维码的转化本设计的二维码是首先在Eclipse软件中利用DES.java加密解密程序,将输入的数据用密钥进行加密,再将得到的密文在草料网上转化为二维码所得。二维码的转化实现如图5所示。4.3 二维码扫描识别与数据解密模块的实现4.3.1 系统界面设计本设计的用户界面模块提供了一个用户操作的界面,可以进行用户的登录,并且显示拍摄的窗口。手机用户通过用户界面的菜单进行输入与选择操作。图6是用户原始界面。 图6 用户原始界面4.3.2 二维码扫描识别的实现本设计中,在建立工程(Project)时借助了Google提供的开源类解码核心库Zxing,用于实现对二维码的扫描与识别,借助Zxing里的类库,调用其中的特定函数进行解码功能的实现。 Zxing是一个开放源码的图像处理库,它借用了Java来对条码进行编写。在对二维码进行扫描识别时需要用到摄像头功能,因此本设计选用了使用广泛的Android系统智能机进行二维码的识别测试。(1)系统包含的包结构图(2)系统主要包的功能介绍本设计的主要包包括:Previewcallback:摄像头回调包;CameraManager:摄像头管理包,主要管理摄像头功能的开关;DecodeHandle:数据传输包;DecodeFormatManager:配置解码格式包;CaptureActivityHandle:是解码成功的数据传输媒介; Encoding:根据输入的字符串生成二维码;AndroidManifest.xml:配置文件。ViewfinderView 是自定义的View,是拍摄时Android手机屏幕中间的取像框。加载main activity,在此类中创建CaptureActivityHandle对象,由该包调用手机的摄像头。创建DecodeThread线程,该线程创建了Decodehandle对象,而这个对象获取从摄像头采集到的并转化后的原始byte数据。包结构图见图7。图8 设置界面布局图7 包结构图(3)设置界面布局,设置Activity关联视图集根。OnCreate方法是在Activity被创建时被系统调用的,是Bundle类型的参数,savedInstanceState方法用来保存Activity状态,super调用(成员方法)。见图8。(4)打开扫描界面扫描二维码。见图9。图9 扫描二维码public void onClick(View v) Intent openCameraIntent = new Intent(BarCodeTestActivity.this,CaptureActivity.class);startActivityForResult(openCameraIntent, 0);4.3.3 数据解密图10解密算法程序图(1)解密算法设计。解密算法程序如图10所示。public String decrypt(byte encryptData) throws UnsupportedEncodingExceptionbyte bytekey = key.getBytes();byte result = new byteencryptData.length;result = DesEncrypt(bytekey, encryptData, 0);String deResult = new String(result);System.out.println(deResult=+deResult);int dataLength = Integer.parseInt(deResult.substring(0, 4);return deResult.substring(4, dataLength+4);图11输入密钥(2)获取解密密钥。输入密钥,并且选择“显示”button,如图11所示。public void onClick(View v) key = QRStrEditText.getText().toString();(3)获取到二维码解码后的字符串,并且根据key进行解密,输出密钥“key=12345678”。 public void handleDecode(Result result, Bitmap barcode) throws UnsupportedEncodingException inactivityTimer.onActivity();playBeepSoundAndVibrate();String resultString = result.getText();System.out.println(resultString=+resultString);String key = BarCodeTestActivity.getKey();System.out.println(key=+key);(4)处理扫描结果,如果密码正确,就在界面上显示,否则不显示。见图12。图 12 密码检测程序(5)调用DES程序对密钥key进行加密解密,并以Base64编码方式对结果字符串进行编码,输出加密后的字符串。DES des= new DES(key);byte encryptStrByte = Base64.decode(resultString);String decryptStr = des.decrypt(encryptStrByte);System.out.println(decr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仿古长廊翻修工程方案(3篇)
- 防火涂料工程维护方案(3篇)
- 揣摩《读书:目的和前提》的写作动机
- 方案指的是分部工程吧(3篇)
- 安全教育法规培训课件
- 安全教育案例培训课件
- 安全教育教师培训报道课件
- 牵引电机检修课件
- 农业供应链金融与智慧农业示范园发展评估报告
- 安全教育培训通过率课件
- 医疗质量 岗前培训课件
- (2025秋新版)二年级上册道德与法治全册教案
- 项目可行性研究报告评估咨询管理服务方案投标文件(技术方案)
- 2025年事业单位工勤技能-广东-广东水生产处理工一级(高级技师)历年参考题库典型考点含答案解析
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 【暑假提前学】2025年秋初中语文八年级上册教学课件 第1单元 2《中国人首次进入自己的空间站》
- 重庆重庆中医药学院2025年第二季度考核招聘工作人员笔试历年参考题库附带答案详解
- 四川雅安市人力资源和社会保障局招考聘用编外工作人员【共500题附答案解析】模拟检测试卷
- 火力发电厂运煤设计规程
- 第十章DNA、RNA的生物合成ppt课件
- 3250变压器综合测试仪(共85页)
评论
0/150
提交评论