毕业设计(论文)-基于android的移动终端简易加解密系统_第1页
毕业设计(论文)-基于android的移动终端简易加解密系统_第2页
毕业设计(论文)-基于android的移动终端简易加解密系统_第3页
毕业设计(论文)-基于android的移动终端简易加解密系统_第4页
毕业设计(论文)-基于android的移动终端简易加解密系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录摘要: 2Abstract: 21 绪论 31.1 本系统研究的意义 31.2 课题的可行性分析 3 技术可行性 3 应用可行性 32 技术介绍 32.1 Android的历史 32.2 Android技术 42.3 几种操作系统的比拟 52.4 Android的开展前景 62.5 JAVA简介 73 移动终端简易加解密系统设计 73.1 系统结构 73.2 系统环境 83.3 系统简要分析 83.4 加解密设计 9 加解密所需环境 93.4.2 加解密所需环境 9 加解密功能表 9 详细设计 103.5 整体设计 11 EncryptUnEncrypt.java 11 Encryptui.java 12 Main.xml 14 Strings.xml 153.6 移动终端简易加解密系统运行图 164 总结 18致谢 19参考文献 19移动终端简易加解密系统摘要:信息产业开展迅速,产业开展,移动互联网日益普及,催生了各类应用的诞生,随着3G时代的到来,技术支持的高度提升势必引发应用行业的急速增长。但如何保证个人移动的信息平安,保证个人的隐私不被侵犯成为了一个迫切需要解决的问题。现在的操作系统一般分为Symbian操作系统,Linux操作系统,WindowsMobile操作系统,Android操作系统等,本论文采用Android操作系统,因为其开放的特性为我们在程序设计时提供了更大的自由度。本系统中用户能对所需文件〔明文〕进行加密,生成密文,当用户需要查询文件时,可以通过密钥将密文转化成原始密文。所需开发工具开发工具AndroidSDK,,eclipse3.5,。关键字:移动终端,加密,解密,AndroidMobileterminalsimpleencryptionsystemAbstract:Therapiddevelopmentofinformationindustryandmobilephoneindustry,andtheincreasingpopularityofmobileInternet,spawnedthebirthofvariousmobilephoneapplications.Asthe3Geracoming,ahighdegreeoftechnicalsupportwillinevitablyleadtotherapidgrowthofmobilephoneapplicationsindustry.Howtoprotectthesafetyofinformationinpersonalmobilephone,howtoprotecttheusers’secretyoutoftherisksisbecominganemergentproblem.ThecurrentmobilephoneOSincludesmainlySymbianOSmobileoperatingsystems,Linuxoperatingsystem,WindowsMobileoperatingsystem,Androidoperatingsystem.Inthispaper,Androidoperatingisused,becauseofitsopendesignofourprogramtoprovidegreaterfreedomdegrees.Intheproposedsystem,theuserofmobilephoneuserscanencrypttherequireddocuments(plaintext)toproduceciphertext;moreover,whenusersneedtocheckdocuments,theycanuseakeytodecrypttheciphertextintotheoriginalciphertext.Developmenttoolsare,eclipse3.5andAndroidADT0.9.7.Keywords:mobileterminal,encryption,decrypt,Android绪论本系统研究的意义目前我国拥有七亿多的用户,这一庞大的用户群体,正遭受信息资料泄密的苦恼,在现代高速开展的社会,一个信息,可以左右企业的成败,这个信息在自己手里是王牌,在对手手里是炸弹。因此如何保护个人信息平安,尤其是我们日常生活中不可或缺的的信息平安,越来越让人关注,就像电影??那样的事情,可能让人好笑的同时,也能让人反思,而加解密可以很好的解决这样的难题,这样类似于密保的功能也提上了开展的舞台上来,移动终端简易加解密系统就是基于这样的开展趋势被提上了日程。课题的可行性分析技术可行性Android是基于Linux内核的操作系统,早期由Google开发,后由开放联盟开发。它采用了软件堆层的架构,主要分为三局部。底层以Linux内核工作为根底,只提供根本功能;其他的应用软件那么由各公司自行开发,以Java作为编写程序的一局部。另外,为了推广此技术,Google和其它几十个公司建立了开放联盟。Android在未公开之前常被传闻为GPhone。目前最新版本为Android2.2。2021年谷歌开发者大会上,Android2.2发布,名称为Froyo,意为冻酸奶[1]。应用可行性随着经济的腾飞和科技的开展,目前我国的用户已经到达了七亿多,Android操作系统已经在中国取得了不错的成绩,为进一步翻开市场做好了准备,相信未来Android在移动发面将占据更加重要的份额[2]。技术介绍Android的历史Android一词的本义指“机器人〞,同时也是Google于2007年11月5日宣布的基于Linux平台的开源操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件[3]。2021年9月22日,美国运营商T-MobileUSA在纽约正式发布第一款Google——T-MobileG1。该款为台湾宏达电代工制造,是世界上第一部使用Android操作系统的,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。Android平台的研发队伍阵容强大,包括Google、HTC(宏达电)、PHILIPS、T-Mobile、高通、魅族、摩托罗拉、三星、LG以及中国移动在内的34家企业,都将基于该平台开发的新型业务,应用之间的通用性和互联性将在最大程度上得到保持。“开放联盟〞表示,Android平台可以促使移动设备的创新,让用户体验到最优越的移动效劳,同时,开发商也将得到一个新的开放级别,更方便的进行协同合作,从而保障新型移动设备的研发速度。34家企业的加盟,也将大大降低新型设备的研发本钱,完全整合的“全移动功能性产品〞成为“开放联盟〞的最终目标。这34家企业中并不包含把持Symbian的诺基亚,以及凭借着iPhone风光正在的苹果公司,美国运营商AT&T和Verizon,当然微软没有参加,独树一帜的加拿大RIM和他们的Blackberry也被挡在门外。Android最震撼人心之处在于系统的开放性和效劳免费。Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;同时与WindowsMobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成本钱。这也使得android在中国的前景十分广阔!Android技术Android是一种基于LinuxV2.6内核的综合操作环境,Android是一个分层的环境,构建在Linux内核的根底上,它包括丰富的功能。UI子系统包括:窗口视图用于显示一些常见组件〔例如编辑框、列表和下拉列表〕的小部件。

Android包括一个构建在WebKit根底上的可嵌入浏览器,iPhone的MobileSafari浏览器同样也是以WebKit为根底。

Android提供多种连接选项,包括WiFi、蓝牙和通过蜂窝〔cellular〕连接的无线数据传输〔例如GPRS、EDGE和3G〕。Android应用程序中一项流行的技术是链接到Google地图,以便在应用程序中显示地址。Android软件栈还提供对基于位置的效劳〔例如GPS〕和加速计的支持,不过并不是所有的Android设备都配备了必需的硬件。另外还有摄像支持。

过去,移动应用程序努力向桌面应用程序看齐的两个领域分别是图形/媒体和数据存储方法。Android通过提供对2D和3D图形的内置支持,包括OpenGL库,解决了图形方面的挑战。由于Android平台包括流行的开源SQLite数据库,因此缓解了数据存储的负担。图1显示一个简化的Android软件层次结构。图1Android软件层次结构Android运行在Linux内核上。Android应用程序是用Java编程语言编写的,它们在一个虚拟机〔VM〕中运行。需要注意的是,这个VM并非您想象中的JVM,而是DalvikVirtualMachine,这是一种开源技术。每个Android应用程序都在DalvikVM的一个实例中运行,这个实例驻留在一个由Linux内核管理的进程中,如下列图所示。

图2DalvikVM几种操作系统的比拟各种不同操作系统比拟Symbian操作系统:〔UIQ、Series60、Series80、Series90〕特点:Symbian是一个实时多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合等移动设备使用。其缺点是在多媒体等方面的表现不尽如人意,且对主流媒体格式的支持性较差。SymbianOS虽然采用多种平台,但各个平台之间第三方软件不兼容,给用户带来一定不便。代表机型:S60:NOKIA9210,N93,N95等S80:NOKIA9300,9500等SymbianUIQ索尼爱立信P802,M608Linux操作系统:特点:Linux具有稳定、可靠、平安等优点,有强大的网络功能。Linux有源代码开放,有利于独立软件开发商开发出硬件利用效率高、功能更强大的应用软件。Linux对先进的语音和数据应用有很好的拓展潜力。Linux在市场的缺乏在于其对内存的要求相对较大,能耗管理系统没有为移动设备优化。另外,Linux的系统启动时间较长,开发界面不直观。代表机型:摩托罗拉公司的A系列商务和E系列局部娱乐,如A780、E680系列、E2等WindowsMobile操作系统:特点:Windowsmobile系列操作系统与PC的Windows操作界面非常相似,功能强大。该操作系统的智能在硬件配置〔如处理器、内存、储存卡容量等〕上较采用其它操作系统的智能要高出许多,因此性能比拟强劲,操作起来速度会比拟快。但此系列的缺点是因配置高、功能多而产生耗电量大、电池续航时间短、硬件本钱高等缺点。代表机型:Smartphone:多普达595,摩托罗拉Q智能,PocketPCphone:多普达900,830RIM操作系统:特点:RIM操作系统基于JAVA平台,运行极为稳定流畅,对JAVA软件兼容能力强,也有不错的软件资源。代表机型:黑莓MACOSX操作系统:特点:MacOSX使用基于BSDUnix的内核,并带有Unix风格的内存管理和抢占式多任务处理,大大改良内存管理,允许同时运行更多软件,且实质上消除了一个程序崩溃导致其它程序崩溃的可能性。且具有极度华美图形用户界面、极高的运行效率和稳定平安性。其缺乏在于MacOS

X是一套封闭的操作系统,不允许第三方开发软件运行代表机型:苹果iPhonePalm操作系统:特点:PalmOS是一种32位的嵌入式操作系统,它的操作界面采用触控式,几乎所有控制选项都排列在屏幕上,使用触控笔便可进行所有操作。作为一套极具开放性的系统,开发商向用户免费提供Palm操作系统的开发工具,允许用户利用该工具在Palm操作系统的根底上编写、修改相关软件。PalmOS的最大优点就是简单易用,占用系统资源少,但缺乏多媒体和通信功能,相当产品还是英文界面,只是使用外挂中文平台。代表机型:PalmTreo650,Treo680等开源移动操作系统Android:特点:谷歌的OS是完全开放的,几乎能在所有硬件上运行,充分地开放和自由UI,完全的原始代码。其特点是完全开放性以及广泛综合性。代表机型:Gphone总体来说,Symbian太强势,WindowsMobile太昂贵,iPhone太封闭,都是相比Android存在的弱点,可以说在Android面前有着巨大的机遇和挑战[4]。Android的开展前景对Android来说,最大的特点就是具有开源性。其特点在于改变以往由少数软件大厂垄断系统软件平台的现况,让众多内容开发商和开放软件供货商来分享共同利益,极大地增进了客户使用经验。Android有别于以往的及移动终端操作系统,它独特的开源和开放性,获得了广阔开放社群的认可,并为其提供稳定且持续更新的支持;同时它又和移动互联网紧密相连,使得开放人员更加容易见互联网应用移植上来;此外,它还让厂商、运营商、甚至用户本人都能很方便的进行全方位的定制或配置。因此,在Android的未来开展中,我认为开展前景将是一片光明。与此同时,人们也应该注意到桌面Linux和其他移动Linux系统的教训,Linux是最为开放性的平台,但是由于太过开放,导致厂商和运营商各自为政,没有一个核心的领导者来统一标准,以至于最终没有能够成为主流。相对于Linux来说,Android相对克服了这样的问题,因为Google公司始终是做为一个产业的领导者,带动其他运营商向前开展。在Android之前,各大厂商都要投入巨资研发自己的操作系统,而由于操作系统的封闭性,又不得不自己开发所有的应用软件,直接导致了研发、管理、生产、销售各个环节的高费用和拖沓。而由Google主导的“开放联盟〞推出的Android系统标准了Linux系统下混乱不堪的平台标准,操作系统本身是开源的,绝大多数应用软件又都由世界各地的开发人员完成的,大大降低了厂商的研发费用,受到3G时代众多厂商和运营商的追捧[5]。Android作为一个智能操作系统,能够提供很多适合于3G新的功能,如视频、可视通讯、基于位置的效劳、视频播客等,这些效劳,将极大地丰富和提高用户体验。在国外,Android正在世界各地遍地开花;在国内,中国移动、中国电信、中国联通都已参加开放联盟,并将开发基于Android平台的设备和推出支持Android平台的移动效劳。这些举措,都将对中国的3G产业链产生深远的影响随着Android技术的成熟,越来越多的企业将会参加到Android的阵营中来,并开发出各色各样的3G应用来,这将会极大地促进3G的开展[6]。JAVA简介Java是一个长期广泛使用的网络编程语言,他是一种新的计算机概念,首先作为一种程序设计语言,他简单,面向对象,不依赖于机器的结构,具有可移植性,平安性,并且提供了开发的机制,具有很高的性能[7]。其次,他最大限度的利用了网络java的小应用程序〔applet〕可在网络上传输而不受CPU和环境的限制,另外,java还提供了丰富的类库,使程序设计者可以很发辫的建立自己的系统[8]。移动终端简易加解密系统设计系统结构android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层[9]。图3-1android系统架构系统环境本系统是基于android平台下编写的,系统对运行环境的要求:Linux2.6内核平台,或Windows2000以上及Mac平台开发工具AndroidSDKeclipse3.5基于Android2.2平台运行[10]系统简要分析本系统的主要使用者为用户,系统用例图3-2如下图3-2系统用例用户对所需文件〔明文〕进行加密,生成密文,当用户需要查询文件时,可以通过密钥将密文转化成原始密文。加解密设计加解密所需环境Linux2.6内核平台,或Windows2000以上及Mac平台加解密所需环境在本系统中主要通过变换和置换等各种方法将被保护信息置换成密文,然后再进行信息的存储,即使加密信息被别人窃取,也可以保证这局部信息不为人所知[11]。加解密功能表表3-1加密解密组件功能表[12]方法名描述Encrypt〔byte[]src,byte[]bytkey〕加密字符串时以字节形式输入,bytkey为密钥,长度必须是8的倍数输入Src将需要加密的字符串以二进制的形式输入,bytkey将密钥以二进制的形式输入输出Returnbyte[]返回加密后的二进制数组Decrypt〔byte[]sty,byte[]bytkey〕解密字符串时以字节形式输入,bytkey必须为8字节,是解密的密钥输入Str将需要解密的密码以二进制形式输入输出Returnstring返回加密后的二进制数组Decryt〔stringstr〕密码解密输入Str将密码以字符形式输入输出Returnstring输出解密后的密码Encrypt〔stringstr〕密码加密输入Str将密码以字符形式输入输出Returnstring返回转化后的字符串Byte2hex〔byte[]b〕二进制转字符串输入b将数据源以二进制形式输入输出Returnbyte[]返回转化后的字符串Byte2hex〔byte[]b〕判断密钥,长度必须是8的倍数输入b将数据源以二进制形式输入输出Returnbyte[]返回转化后的字符串详细设计加解密算法分为两种:受限的平安算法和非限的平安算法[13]。本程序采用的是非受限的平安算法,数据通过加密密钥进行加密,在解密的时候必须通过相应的解密密钥才能得到原始明文。下面通过一个test测试类来实现对文件的加密解密[14]。Packagesmart.jrsoft.util;publicclasstest﹛//测试用例,不需要传递任何参数,直接执行即可Publicstaticvoidmain(String[]args)﹛Stringstr1﹦"123";//密钥//调用不可逆加密组件里的文件加密,方法,对文件进行加密,解密Encryptutileu﹦newEncryptutil();//执行方法,并打印结果,//加密后生成.jsmt文件System.out.println("加密文件是:"﹢eu.encryptFile("E:\\123\\123.tet",str1))//对加密后.jsmt文件进行解密System.out.println("解密文件是:"﹢eu.encryptFile("E:\\123\\123.tet.jsmt",str1));﹜﹜//classisover.对文件加密前,想好一个密码,然后把密码和要加密的文件传入加密算法中,加密成功后会在原文的同级目录里生成扩展名为.jsmt的文件,如"E:\\123\\123.tet"加密后生成"E:\\123\\123.tet.jsmt"文件。文件解密前确保被解密文件的扩展名正确,其次不要忘记解密密码[15]。加解密效果图图3.3加解密效果图整体设计EncryptUnEncrypt.javapackagecom.android.encrypt.al;publicclassEncryptUnEncrypt{ publicstaticStringHoveryRC4(StringaInput,StringaKey){ int[]iS=newint[256]; byte[]iK=newbyte[256]; for(inti=0;i<256;i++) iS[i]=i; intj=1; for(shorti=0;i<256;i++){ iK[i]=(byte)aKey.charAt((i%aKey.length())); } j=0; for(inti=0;i<255;i++){ j=(j+iS[i]+iK[i])%256; inttemp=iS[i]; iS[i]=iS[j]; iS[j]=temp; } inti=0; j=0; StringrOutput=""; shortiMask=15; char[]iInputChar=aInput.toCharArray(); char[]iOutputChar=newchar[iInputChar.length]; for(shortx=0;x<256;i++){ i=(i+1)%256; j=(j+iS[i])%256; inttemp=iS[i]; iS[i]=iS[j]; iS[j]=temp; intt=(iS[i]+(iS[j]%256))%256; intiY=iS[t]; chariCY=(char)iY; iOutputChar[x]=(char)(iInputChar[x]^iCY); } returnnewString(iOutputChar); }}本模块的主要任务是对字符串进行加解密[16]Encryptui.javapackagecom.android.encrypt.ui;importjava.io.UnsupportedEncodingException;importcom.android.encrypt.al.Base64;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.TextView;publicclassencryptuiextendsActivity{ privateEditTextgetCodeEditText; privateEditTextgetCipherEditText; privateButtonproduceButton; privateButtonenproduceButton; privateTextViewcodeTextView; privateTextViewcipherTextView;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);getCodeEditText=(EditText)findViewById(R.id.code_EditText);getCipherEditText=(EditText)findViewById(R.id.cipher_EditText);produceButton=(Button)findViewById(R.duce_Button);enproduceButton=(Button)findViewById(R.id.enproduce_Button);codeTextView=(TextView)findViewById(R.duced_TextView);cipherTextView=(TextView)findViewById(R.id.enproduced_TextView);produceButton.setOnClickListener(newOnClickListener(){ publicvoidonClick(ViewV){ StringgetCodeString=getCodeEditText.getText().toString(); getCipherEditText.setText(Base64.encode(getCodeString.getBytes())); codeTextView.setText("getCipherEditText.getText()); }});enproduceButton.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ try{ cipherTextView.setText("newString(Base64.decode(getCipherEditText.getText().toString()))); }catch(UnsupportedEncodingExceptione){ cipherTextView.setText } }});}}本模块主要对界面元素初始化[17]Main.xml<?xmlversion="1.0"encoding="utf-8"?><AbsoluteLayoutxmlns:android="://schemas.android/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="@string/hello"/><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_y="20dip" android:text="@string/code_string"></TextView><EditText android:id="@+id/code_EditText" android:layout_y="50dip" android:layout_width="240px" android:layout_height="wrap_content" android:editable="true"></EditText><Button android:id="@+id/produce_Button" android:layout_y="50dip" android:layout_x="240dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="生成密文"></Button><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_y="130dip" android:text="@string/cipher_string"></TextView><EditText android:id="@+id/cipher_EditText" android:layout_y="160dip" android:layout_width="240px" android:layout_height="wrap_content" android:editable="true"></EditText><Button android:id="@+id/enproduce_Button" android:layout_y="160dip" android:layout_x="240dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="解析密文"></Button><TextView android:id="@+id/produced_TextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_y="240dip"></TextView><TextView android:id="@+id/enproduced_TextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_y="300dip"></TextView></AbsoluteLayout>本模块主要对主界面布局[18]Strings.xml<?xmlversion="1.0"encoding="utf-8"?><resources><stringname="hello">欢送使用</string><stringname="code_string">请输入明文/string><stringname="cipher_string">生成的密钥/string><stringname="app_name">Android字符串加密解密小工具</string></resources>本模块标签映射值,和main配合使用[19]移动终端简易加解密系统运行图1启动Android模拟器emulator-avdplat22 //palt22为机器上已经建立的模拟平台[20]2启动之后的界面就如一个模拟的图样,非常方便我们在上面设计添加功能组件,如图3.4所示图3.4启动时的界面3运行后大概25秒左右将会出现整个模拟的样式,如图3.5所示图3.5运行中出现的界面4在明文一栏输入“中南民族大学〞点击生成密文,将会在生成密文一栏生成已经加密的信息,对密文解析,点击解析密文,会在下面生成密文,明文一栏,经过对照,本系统符合要求。最终生成界面如图3.6所示。图3.6加解密最终生成的界面总结在本系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论