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