歐杵鄉(xiāng)
摘要:隨著Java技術(shù)的廣泛應(yīng)用和發(fā)展,對(duì)于Java應(yīng)用程序的安全問(wèn)題逐步得到重視,相關(guān)安全技術(shù)也逐步改進(jìn)中。文章主要探討了Java軟件的加密方法及應(yīng)用,以供參考。
關(guān)鍵詞:Java軟件;加密;方法
中圖分類號(hào):TP311.52 文獻(xiàn)識(shí)別碼:A 文章編號(hào):1001-828X(2016)005-000-01
Java的安全性都是借助手動(dòng)安裝安全管理器執(zhí)行安全措施,并非自動(dòng)運(yùn)行。而安全措施都是都是依賴于代碼的來(lái)源進(jìn)行授權(quán),根據(jù)代碼來(lái)源設(shè)定相應(yīng)的資源訪問(wèn)權(quán)限,有助于保證應(yīng)用程序的安全運(yùn)行。Java的安全性是Java語(yǔ)言的重要組成部分,它自身內(nèi)置多種安全特性,因此要進(jìn)行合理加密,方可有效保證Java應(yīng)用程序的安全。
一、 Java特性分析
(一)操作相對(duì)簡(jiǎn)單
Java操作相對(duì)簡(jiǎn)單,只要具備C語(yǔ)言基礎(chǔ),稍加學(xué)習(xí)基本就可以掌握操作方法。而且其在設(shè)計(jì)過(guò)程中所面向的對(duì)象是數(shù)據(jù)和數(shù)據(jù)接口,可以實(shí)現(xiàn)即插即用,其在使用過(guò)程中采用類機(jī)制,為系統(tǒng)提供一類對(duì)象的原型,在繼承以及承載機(jī)制的支持下可以對(duì)父類進(jìn)行重新定義,得到一個(gè)新的子類,這一過(guò)程中實(shí)際上就是代碼復(fù)用過(guò)程。
(二)對(duì)內(nèi)存進(jìn)行自動(dòng)管理
可以對(duì)內(nèi)存進(jìn)行自動(dòng)管理,對(duì)于一些無(wú)用內(nèi)存直接回收,開發(fā)工作因此被簡(jiǎn)化。最初所使用的垃圾回收技術(shù)顯然不具備這種優(yōu)勢(shì),由于占用系統(tǒng)過(guò)多資源導(dǎo)致整個(gè)系統(tǒng)運(yùn)行速度都受到影響,而Java對(duì)這種回收技術(shù)進(jìn)行升級(jí),定期對(duì)系統(tǒng)內(nèi)的單元進(jìn)行檢查,并自動(dòng)回收一些無(wú)用單元,程序的穩(wěn)定性明顯提升。
(三)穩(wěn)定性和安全性
非法訪問(wèn)內(nèi)存使我們?cè)谑褂贸绦蜻^(guò)程中會(huì)經(jīng)常遇到的問(wèn)題,實(shí)際上就是程序指針的出現(xiàn)錯(cuò)誤,而Java就可以解決這一問(wèn)題,因?yàn)槠洳⒉皇褂弥羔標(biāo)阈g(shù)法,而是將真正的數(shù)組提供給程序。同時(shí),在對(duì)象類型轉(zhuǎn)換過(guò)程中,指針不會(huì)替換數(shù)組中的任意數(shù),因此編程工作量大大減少,運(yùn)行錯(cuò)誤率降低,系統(tǒng)穩(wěn)定性明顯提升。另外,Java設(shè)計(jì)的最終目標(biāo)是為設(shè)計(jì)者提供一個(gè)可靠的計(jì)算環(huán)境,因此安全性是非常重要的,要保證其在使用過(guò)程不受到病毒侵襲。驗(yàn)證技術(shù)的使用就可以滿足這種安全需要,該技術(shù)的基礎(chǔ)為公鑰加密,對(duì)于各類安全策略的實(shí)施具有重要意義。
(四)解釋執(zhí)行
如果機(jī)器已經(jīng)安裝解釋器,其就可以發(fā)揮自身的解釋功能,實(shí)現(xiàn)字節(jié)代碼的執(zhí)行,可以不必對(duì)其進(jìn)行重新編譯。解釋器具有向上兼容的特征,就是說(shuō)低版本可以在高版本環(huán)境下正常運(yùn)行,但是如果將高版本放在低版本環(huán)境下運(yùn)行,就有可能出現(xiàn)不兼容現(xiàn)象。同時(shí)Java還可以適應(yīng)跨異構(gòu)環(huán)境,典型特征就是可以實(shí)現(xiàn)一次編譯、到處運(yùn)行,只要系統(tǒng)安裝Java虛擬機(jī),無(wú)論主機(jī)以及處理器為何種類型,都不會(huì)影響Java的運(yùn)行,這也是其受到企業(yè)青睞的主要原因。使用Java所開發(fā)出來(lái)的系統(tǒng)幾乎可以實(shí)現(xiàn)“零移植”,也就是平時(shí)我們所說(shuō)的平滑移植,只要簡(jiǎn)單修改一下配置文件即可。
二、Java軟件的加密方法
(一) BASE
BASE是典型對(duì)稱加密算法,該技術(shù)已十分成熟,屬于一種屬于編碼格式的加密方法,是目前最為常用的加密方式,能對(duì)Bit字節(jié)代碼進(jìn)行加密,能對(duì)HTTP環(huán)境下的信息進(jìn)行標(biāo)識(shí)加密,使編碼數(shù)據(jù)不會(huì)被人用肉眼所直接看到。例如,在JavaPersistence系統(tǒng)Hibernate中加密方式,就是利用Base將唯一標(biāo)識(shí)符編碼加密,使其無(wú)法被直接讀取。
(二)MD
MD加密方法是當(dāng)前最為廣泛使用的雜湊算法之一,加密效果好,且對(duì)于保證傳輸數(shù)據(jù)的完整性有著顯著效果,很多主流軟件都利用了MD加密方式。MD在JAVA中的應(yīng)用能生成與軟件相互對(duì)應(yīng)的固定長(zhǎng)度的MD值,在使用中需要驗(yàn)證MD值是否一致。MD加密方式具有較強(qiáng)的抗修改性,并且想要偽造MD值數(shù)據(jù),獲取原數(shù)據(jù)的MD值也非常困難。在JAVA中的應(yīng)用,可用于大數(shù)據(jù)數(shù)字前面軟件簽署秘鑰,非常值得推廣和應(yīng)用。
(三)SHA
SHA加密安全性和穩(wěn)定性好,主要適用于數(shù)字簽名標(biāo)準(zhǔn)里面定義的數(shù)字簽名算法。該加密方式被需要加密專家研究并完善,其技術(shù)已非常成熟,被廣泛應(yīng)用。SHA是生成個(gè)位的信息摘要明文,然后在以不可逆的方式將其轉(zhuǎn)為為一段密文,而想要讀取數(shù)據(jù)就要取得一串輸入碼,進(jìn)行密文的驗(yàn)證。并且這種加密方式中,生成的密文長(zhǎng)度較短、位數(shù)固定、管理方便,且不易破解,能大大提高軟件安全性。
三、類文件加密方法分析
加密Java類文件可以有效防止其被反編譯,保護(hù)Java軟件的安全,經(jīng)過(guò)加密以后,文件的格式發(fā)生變化,特征也與以往有明顯不同,即使對(duì)其進(jìn)行反編譯,所得到的原代碼也是沒(méi)有價(jià)值的。JEC屬于擴(kuò)展平臺(tái),其中包含著多種加密算法,而且操作簡(jiǎn)便;而AES屬于一種高級(jí)加密算法,前面提到過(guò)其具有對(duì)稱性的特征,加密效率很高,安全性也較好,加密系統(tǒng)中可以將這兩種加密方式結(jié)合起來(lái)使用,提升加密的可靠性。
傳統(tǒng)的DES加密算法之所以被取代,是因?yàn)槠渲话?6位秘鑰,隨著計(jì)算機(jī)技術(shù)的提高,系統(tǒng)的計(jì)算能力明顯增強(qiáng),完全可以憑借其強(qiáng)大的計(jì)算能力將其破解,而其本身結(jié)構(gòu)又比較緊湊,一旦修改一些細(xì)節(jié),整體性就會(huì)被破壞。AES加密算法就彌補(bǔ)了以上不足,其采用128、192及256比特的秘鑰,具體算法原理如下:加密秘鑰在擴(kuò)展算法的計(jì)算下得到輪秘鑰,其總位數(shù)等于分組長(zhǎng)度與輪數(shù)的乘積再加上1。這種算法有一個(gè)優(yōu)勢(shì)就是即使擴(kuò)展算法被修改,其影響的也只是與其對(duì)應(yīng)部分的加密工作,其他部分并不會(huì)受到影響,不僅不會(huì)破壞整體性,算法的擴(kuò)展性也大大增強(qiáng)。
但是加密組件的工作并不僅僅是完成類文件的加密,同時(shí)還要對(duì)加密秘鑰進(jìn)行二次加密,這一環(huán)節(jié)是非常有必要的,因?yàn)锳ES的高安全性是建立在加密秘鑰安全的前提下,秘鑰中同時(shí)包含了加密和解密,一旦秘鑰被竊取,之前所有工作就都失去了意義。對(duì)秘鑰進(jìn)行二次加密時(shí),采用字符串變換函數(shù)的方式,按照一定的規(guī)律對(duì)其進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換以后的字符串是沒(méi)有任何意義的,雖然其復(fù)雜程度不高,但是可以滿足實(shí)際需要。
類文件經(jīng)過(guò)篩選以后,在加密系統(tǒng)的作用下完成加密工作,這一過(guò)程需要篩選器提供支持,其會(huì)生成一種特定規(guī)則作為加密條件,如果其有加密的需要,AES加密組件就會(huì)完成加密工作,如果其沒(méi)有加密的需要,則原class文件就會(huì)被保存下來(lái)。如果秘鑰和密碼相同,在對(duì)數(shù)據(jù)進(jìn)行加密和解密時(shí),要求密碼對(duì)象采用一樣的方式,將Cipher初始化,然后讀取類文件數(shù)據(jù),明確哪些數(shù)據(jù)是需要加密的,然后就正式開始加密工作,加密完的文件會(huì)被自動(dòng)保存,將原始類文件覆蓋掉。
四、結(jié)束語(yǔ)
綜上所述,Java語(yǔ)言是目前較為常用的軟件開發(fā)語(yǔ)言,編程相對(duì)簡(jiǎn)單,軟件開發(fā)周期短,成本低。但是,由于Java語(yǔ)言的特點(diǎn),導(dǎo)致Java軟件易于破解及遭受到攻擊。為了保證Java軟件安全性必須采取必要的加密措施,利用多種加密方法,對(duì)軟件進(jìn)行加密保護(hù)。
參考文獻(xiàn):
[1]楊卓林.基于java的手機(jī)短信加密技術(shù)探討[J].科技信息,2014(07).
[2]于守良.關(guān)于Java面向?qū)ο蟪绦蛟O(shè)計(jì)課程的思考[J].中國(guó)教育技術(shù)裝備,2013(15).