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