摘 要 隨著智能手機(jī)的高速發(fā)展,手機(jī)軟件開(kāi)發(fā)成為了當(dāng)下熱門(mén)行業(yè)。目前主流的手機(jī)操作系統(tǒng)Android操作系統(tǒng)的智能手機(jī)市場(chǎng)占有率很高,其操作平臺(tái)是基于Linux為核心,支持和使用Java作為編程語(yǔ)言開(kāi)發(fā)相應(yīng)的手機(jī)軟件。本文以Java語(yǔ)言為基礎(chǔ),通過(guò)分析Java語(yǔ)言的概述及手機(jī)軟件應(yīng)用程序架構(gòu),簡(jiǎn)要敘述基于Java語(yǔ)言下手機(jī)軟件開(kāi)發(fā)技術(shù),最后以基于Java語(yǔ)言對(duì)手機(jī)加密軟件開(kāi)發(fā)實(shí)例進(jìn)行探討,提高了文章的操作性和實(shí)用性,使得讀者能夠更加清晰的了解基于Java語(yǔ)言的手機(jī)軟件開(kāi)發(fā)技術(shù)。
【關(guān)鍵詞】Java語(yǔ)言 Android操作系統(tǒng) 軟件設(shè)計(jì) 開(kāi)發(fā)技術(shù)
1 Java語(yǔ)言概述與手機(jī)軟件應(yīng)用程序
1.1 Java語(yǔ)言
Java語(yǔ)言?xún)?nèi)涵和實(shí)質(zhì)是面向網(wǎng)絡(luò)程序設(shè)計(jì)的設(shè)計(jì)的語(yǔ)言,是程序員的在創(chuàng)建應(yīng)用程序時(shí)必備的工具,并且這些應(yīng)用程序在設(shè)計(jì)之后,能夠被下載和普遍、穩(wěn)定、安全運(yùn)用,Java語(yǔ)言是面向?qū)ο蟮恼Z(yǔ)言,內(nèi)部軟件能夠通過(guò)部件的形式進(jìn)行編程,而為了滿(mǎn)足軟件內(nèi)部的協(xié)調(diào)和各種需求,軟件內(nèi)部是相互協(xié)調(diào)。所有的程序語(yǔ)言都是通過(guò)編譯和解釋之后才應(yīng)用到電腦或者其他電子設(shè)備上執(zhí)行操作,Java語(yǔ)言通過(guò)編譯和解釋兩個(gè)過(guò)程:首先,將Java語(yǔ)言翻譯成源代碼;其次,利用虛擬機(jī)將源代碼轉(zhuǎn)換成電腦和其他電子設(shè)備可以識(shí)別的程序,從而完成軟件和程序的開(kāi)發(fā)。Java虛擬機(jī)顧名思義其實(shí)是想象中的操作設(shè)備,其實(shí)質(zhì)是通過(guò)現(xiàn)實(shí)的電腦進(jìn)行軟件模擬,Java源程序在通過(guò)翻譯器翻譯之后變成字節(jié)碼,這些字節(jié)碼能夠被虛擬機(jī)識(shí)別并解釋這些字節(jié)碼,然后將字節(jié)碼在發(fā)送給翻譯器,翻譯器再將其翻譯成電腦等電子設(shè)備能夠理解的機(jī)器碼,最終實(shí)現(xiàn)整個(gè)編程過(guò)程。
1.2 手機(jī)軟件應(yīng)用程序
從目前應(yīng)用最為廣泛、發(fā)展速度最快的安卓手機(jī)來(lái)看,其應(yīng)用程序主要包括Activity、Service、Content Provider、Intent。在這些應(yīng)用程序中,Activity主要提供多個(gè)使用數(shù)據(jù)的存儲(chǔ),并且能夠獨(dú)立保持后臺(tái)運(yùn)行的服務(wù),Intent是手機(jī)軟件運(yùn)行過(guò)程中,擁有自動(dòng)保存機(jī)制,簡(jiǎn)單的說(shuō)就是一個(gè)程序或者是一個(gè)活動(dòng),轉(zhuǎn)跳到另外一個(gè)程序或者活動(dòng),它能夠?qū)崿F(xiàn)數(shù)據(jù)的自動(dòng)保存,方便程序和活動(dòng)的切換,防止在切換的過(guò)程中數(shù)據(jù)無(wú)故丟失。在手機(jī)應(yīng)用過(guò)程中,應(yīng)用程序是整個(gè)軟件的核心組成部分,其涵蓋的內(nèi)容相當(dāng)廣泛。例如手機(jī)的通信、短信、客戶(hù)端、瀏覽器和游戲等等。這些應(yīng)用程序的構(gòu)造主要是通過(guò)Java語(yǔ)言進(jìn)行編寫(xiě)的,Java語(yǔ)言提供了應(yīng)用程序之間的相互交互,使得整個(gè)應(yīng)用程序得框架結(jié)構(gòu)得到簡(jiǎn)化,并且其相關(guān)的重要部件之間的使用也得到了簡(jiǎn)化。
1.3 基于Java語(yǔ)言的手機(jī)軟件軟件開(kāi)發(fā)
在設(shè)計(jì)過(guò)程中,Java語(yǔ)言在手機(jī)軟件開(kāi)發(fā)中的技術(shù)分析從方法、開(kāi)發(fā)過(guò)程以及開(kāi)發(fā)環(huán)境的搭建三個(gè)最主要的方面進(jìn)行分析。
1.3.1 手機(jī)軟件開(kāi)發(fā)的方法
前文中已經(jīng)說(shuō)明了Java語(yǔ)言在安卓手機(jī)中的開(kāi)發(fā)應(yīng)用,開(kāi)發(fā)主要是利用Java語(yǔ)言進(jìn)行編寫(xiě)的,編寫(xiě)完成之后以應(yīng)用程序的形式被下載和應(yīng)用。
1.3.2 手機(jī)軟件開(kāi)發(fā)過(guò)程
在手機(jī)軟件的開(kāi)發(fā)過(guò)程中,為了保護(hù)軟件的穩(wěn)定性和安全性,在開(kāi)發(fā)時(shí)需要設(shè)置相應(yīng)的用戶(hù)權(quán)限,即用戶(hù)界面設(shè)計(jì)和資源的獲取是有一定的權(quán)限設(shè)置,只有在權(quán)限允許的情況下,才能完成相應(yīng)的資源提取和程序啟動(dòng),這是對(duì)應(yīng)用程序的保護(hù),而獲取權(quán)限和對(duì)權(quán)限進(jìn)行命名時(shí),有屬于用戶(hù)的使用和體驗(yàn)過(guò)程。為了更好的保護(hù)用戶(hù)文件的權(quán)限,在生成用戶(hù)界面的過(guò)程時(shí),主要是由代碼直接生成以及XML生成兩種方式。
1.3.3 手機(jī)軟件開(kāi)發(fā)環(huán)境搭建
作為最主要的設(shè)計(jì)語(yǔ)言,Java語(yǔ)言在環(huán)境搭建時(shí)應(yīng)該被首先保護(hù)和搭建,只有對(duì)最基本的程序語(yǔ)言進(jìn)行搭建,才能進(jìn)行下一步的操作。之后對(duì)于插件的安裝以及安裝Android SDK。在開(kāi)發(fā)環(huán)境的搭建中,Java環(huán)境是保障系統(tǒng)安全性和穩(wěn)定性的關(guān)鍵,搭建的過(guò)程首先將JDK 進(jìn)行安裝,其次對(duì)于系統(tǒng)變量進(jìn)行設(shè)置。
2 基于Java語(yǔ)言設(shè)計(jì)手機(jī)短信加密軟件實(shí)證分析
2.1 利用的平臺(tái)和技術(shù)
2.1.1 Android 系統(tǒng)
Android系統(tǒng)是美國(guó)谷歌公司在2007年推出的,依靠其強(qiáng)大的性能和開(kāi)放性特點(diǎn),瞬間成為了移動(dòng)設(shè)備操作系統(tǒng)的佼佼者,從Android系統(tǒng)的架構(gòu)上看,主要包括五個(gè)部分:Linux Kernel、Android Runtime 、Libraries、Application Framework和Applications。這五個(gè)部分構(gòu)成了Android系統(tǒng)的整個(gè)系統(tǒng),其Eclipse 開(kāi)發(fā)平臺(tái)就是基于Java語(yǔ)言的擴(kuò)展和開(kāi)發(fā)平臺(tái),許多情況下Eclipse就作為Java集成開(kāi)發(fā)環(huán)境下使用,但是其用途不僅僅局限在Java語(yǔ)言的開(kāi)發(fā)中,是Java開(kāi)發(fā)工具的延伸。
2.1.2 DES加密算法
DES算法是1977年美國(guó)國(guó)家標(biāo)準(zhǔn)局采用的數(shù)據(jù)加密標(biāo)準(zhǔn),主要是利用循環(huán)和迭代將簡(jiǎn)單的運(yùn)算轉(zhuǎn)變?yōu)榉蔷€(xiàn)性變換實(shí)現(xiàn)對(duì)于數(shù)據(jù)的加密和保護(hù)。在56位密鑰和64位二進(jìn)制信息加密成64位密文信息。其主要有三個(gè)具體的流程:首先,出事置換IP,將明文按照一定的邏輯和順序進(jìn)行順序打亂;其次,乘積交換,進(jìn)行16輪迭代;最后,逆初始置換IP,按照固定表順序打亂,最終輸出64位信息,此64位信息就是加密信息,從而完成整個(gè)明文信息的加密過(guò)程。由于DES在密鑰位數(shù)和迭代數(shù)問(wèn)題,導(dǎo)致DES存在明顯的缺陷,而在實(shí)際操作過(guò)程中,3DES被普遍使用,其中包含了四中模式,分別是DES-EEE3;DES-EDE3;DES-EEE2;DES-EDE2四種使用模式。在操作過(guò)程中,手機(jī)短信的字符數(shù)較少,一般采用3DES加密處理。
2.2 Android信息處理
了解Android信息處理機(jī)制對(duì)于信息加密軟件的設(shè)計(jì)非常重要,只有了解了信息是如何處理的,才能更好的有針對(duì)性的對(duì)于信息進(jìn)行加密處理。Android信息處理首先通過(guò)用戶(hù)發(fā)出一條信息,發(fā)送到收件箱,調(diào)用收件箱的enqueue Message函數(shù),根據(jù)接收到的信息隊(duì)列,將信息放入收件箱中。通過(guò)Loop從收件箱中從前往后取出信息,然后通過(guò)使用者的dispatch Message函數(shù)進(jìn)行信息的處理和加工,這個(gè)過(guò)程中,課件信息是由使用者進(jìn)行處理和負(fù)責(zé)的。信息處理結(jié)束之后,使用者通過(guò)recycle函數(shù)再次將信息放入到收件箱中,從而為信息進(jìn)行儲(chǔ)存和方便下次信息的使用。這個(gè)過(guò)程中,由于信息的處理屬于在開(kāi)放環(huán)境下,信息很難實(shí)現(xiàn)加密處理,信息的安全性能也得不到相應(yīng)的保障,所以在機(jī)遇Java語(yǔ)言下,針對(duì)信息加密問(wèn)題,對(duì)于手機(jī)信息加密軟件進(jìn)行編程,從而獲得更加安全的信息保護(hù)。
3 基于Java語(yǔ)言的手機(jī)加密軟件開(kāi)發(fā)
3.1 3DES加密與解密
設(shè)Ek( )和Dk( )代表DES算法的加密和解密過(guò)程,K代表DES算法,使用的密鑰P代表明文,C代表密表。
3DES加密過(guò)程為:C=Ek3(Dk2(Ek1(P)))
3DES解密過(guò)程為:P=Dk1((EK2(Dk3(C)
public static byte[] desEncrypt(String message, String key) throws Exception { Cipher cipher = Cipher.getInstance("DESede"); DESKeySpec desKeySpec=new DESKeySpec(key.getBytes("UTF-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(message.getBytes("UTF-8"));
在整個(gè)設(shè)計(jì)過(guò)程中,進(jìn)行對(duì)比其他平臺(tái)對(duì)接發(fā)現(xiàn)對(duì)于同樣的加密結(jié)果卻現(xiàn)實(shí)不同,所以針對(duì)這樣的情況,對(duì)于JDK文件進(jìn)行了檢查,發(fā)現(xiàn)JDK文件現(xiàn)實(shí)如下:
A transformation is a string that describes the operation (or set of operations) to be performed on the given input, to produce some output.
A transformation is of the form:
·"algorithm/mode/padding" or ·"algorithm"
(in the latter case, provider-specific default values for the mode and padding scheme are used).
在結(jié)合之前我們所選擇的代碼,編寫(xiě)的算法是不存在問(wèn)題的,那導(dǎo)致加密結(jié)果不同的原因在哪?針對(duì)此,主要原因出現(xiàn)在MODE和padding。所以在使用JAVA語(yǔ)言編碼時(shí),一定要主義采用相同的MODE和padding,只有這樣才能夠保證通信的正常使用。
3.2 Java語(yǔ)言手機(jī)加密軟件開(kāi)發(fā)實(shí)現(xiàn)
在基于Java語(yǔ)言下利用DES加密算法實(shí)現(xiàn)手機(jī)信息加密軟件的開(kāi)發(fā),在這個(gè)過(guò)程中,利用虛擬手機(jī)平臺(tái),進(jìn)行加解密程序編寫(xiě),模擬和實(shí)現(xiàn)加解密程序的運(yùn)行效果,從而達(dá)到測(cè)試和使用加解密軟件。
(1)將手機(jī)連接到電腦中,在安卓虛擬平臺(tái)下,對(duì)于加解密軟件進(jìn)行編程,為了更好的實(shí)現(xiàn)手機(jī)信息加密軟件。
(2)打開(kāi)手機(jī)信息,進(jìn)入到手機(jī)的短信收發(fā)界面。
(3)在手機(jī)中運(yùn)行J2ME MIDlet程序,點(diǎn)擊手機(jī)的消息的便捷界面,從而進(jìn)行手機(jī)信息的編寫(xiě),編寫(xiě)完成之后,選擇相應(yīng)的聯(lián)系人,從而完成整個(gè)短信內(nèi)容的編寫(xiě)過(guò)程。
(4)進(jìn)入目標(biāo)手機(jī)的接收界面,對(duì)于剛剛編寫(xiě)的接收信息進(jìn)行編輯,從而達(dá)到解密的目的,解密完成后,此次加解密操作就算完成了。
4 手機(jī)加密軟件開(kāi)發(fā)的難點(diǎn)
加解密軟件利用的是JDK1.5,此次的實(shí)驗(yàn)主要是針對(duì)Android手機(jī)開(kāi)發(fā)的應(yīng)用軟件,所以適用性上僅僅適用于安卓手機(jī)用戶(hù),不能夠移植到其他系統(tǒng)中。在實(shí)際的軟件開(kāi)發(fā)過(guò)程中,DES加密密鑰在Java庫(kù)函數(shù)中是隨機(jī)產(chǎn)生的,所以在操作的過(guò)程中用戶(hù)沒(méi)有輸入相應(yīng)的密鑰操作,和普通手機(jī)發(fā)短信沒(méi)有表面的區(qū)別。其中難點(diǎn)在于軟件必須保證通信雙方共同使用該軟件,才能夠正常的實(shí)現(xiàn)短信的收發(fā)功能,如果一方未安裝加密軟件,則加密軟件就不能發(fā)揮相應(yīng)的作用。
5 總結(jié)
移動(dòng)電子設(shè)備已經(jīng)成為了人們生產(chǎn)、生活必不可少的重要工具,伴隨著技術(shù)的不斷革新和發(fā)展,手機(jī)的功能越來(lái)越強(qiáng)大,在帶給人們便利的背后,離不開(kāi)對(duì)于手機(jī)軟件開(kāi)發(fā)的創(chuàng)新和探索。近年來(lái),對(duì)于手機(jī)軟件的需求和要求不斷提高,不僅需要新穎的軟件和應(yīng)用程序,更需要穩(wěn)定、安全、便捷的操作體驗(yàn),所以在Java語(yǔ)言編程下的手機(jī)軟件需要在發(fā)展和創(chuàng)新的過(guò)程中不斷積累經(jīng)驗(yàn),提高軟件的安全性、穩(wěn)定性和適用性,從而推動(dòng)手機(jī)的發(fā)展。
參考文獻(xiàn)
[1]楊治.手機(jī)軟件交互設(shè)計(jì)研究[D].哈爾濱工程大學(xué),2013.
[2]韓路,高賢強(qiáng).基于Android系統(tǒng)的手機(jī)軟件開(kāi)發(fā)研究[J].電子技術(shù)與軟件工程,2014(03):60-61.
[3]周銳棠.闡述Java語(yǔ)言在手機(jī)中的結(jié)合運(yùn)用[J].數(shù)字技術(shù)與應(yīng)用,2010(11):204.
[4]宋杰,黨李成,郭振朝,趙萌. Android OS手機(jī)平臺(tái)的安全機(jī)制分析和應(yīng)用研究[J].計(jì)算機(jī)技術(shù)與發(fā)展, 2010,20(06):152-155.
[5]埃始兒,陳灝鵬.Java的編程思想[M].北京:機(jī)械工業(yè)出版社,2009(08).
作者簡(jiǎn)介
陳林,工程碩士學(xué)位?,F(xiàn)為江蘇省鹽城機(jī)電高等職業(yè)技術(shù)學(xué)校講師。研究方向?yàn)橛?jì)算機(jī)技術(shù)應(yīng)用。
作者單位
江蘇省鹽城機(jī)電高等職業(yè)技術(shù)學(xué)校 江蘇省鹽城市 224005