對於中國來說,雖然很多國外的設備可以進口,但是加密設備是不能進口的,因為這涉及到網絡安全和國家機密信息的安全,所以必須要研發自己的加密算法,其中國際上有DES(數據加密標準)。它是最早也是應用最廣泛的分組對稱加密算法DES,用比特蜜密鑰加密比特明文,輸出比特密文DES的比特密鑰* * *存在壹個可能的密鑰,但歷史上DES密鑰曾被窮舉攻擊破解過。萬元制造的專用計算機在小時內破解了DES的密鑰,而EFF每年都要在小時內完成破解工作,使得DES算法受到嚴重打擊,嚴重威脅其安全性,因為JAVA語言的安全性和網絡處理能力都很強。本文主要介紹了在Java環境下使用IDEA(內部數據加密算法)數據加密算法實現數據的安全傳輸。
壹種理想的數據加密算法
IDEA數據加密算法是由中國學者薛佳博士和著名密碼學家詹姆斯·L·馬西於年共同提出的。它的明文和密文都是比特,但密鑰長度是比特。IDEA是作為壹種叠代分組密碼實現的,它使用密鑰位和周期,比des提供更高的安全性,但在為IDEA選擇密鑰時應排除這些因素。被稱為弱密鑰的密鑰DES只有四個弱密鑰和壹個第二弱密鑰,但IDEA中弱密鑰的數量是可觀的冪。但是,如果鍵的總數非常大,仍然有電源鍵可供選擇。想法被認為是極其安全的。與DES相比,使用bits的蠻力攻擊所需的測試次數會明顯增加,甚至允許測試弱密鑰,本身就說明它特別抗專業的分析攻擊。
二、Java密碼系統和Java密碼擴展
Java是Sun公司開發的面向對象編程語言,由於其平臺無關性,被廣泛應用於互聯網的Java密碼系統(JCA)和Java密碼系統擴展(JCE)的開發中。設計的目的是為Java提供壹個與實現無關的加密函數API。都是用工廠方法創建類的例程,然後把實際的加密功能委托給提供者指定的底層引擎,底層引擎為類提供壹個服務提供者接口。Java中的數據加密/解密是利用其內置的JCE(Java Encryption Extension)實現的。由實現的Java開發工具集提供了壹個基於供應商的新的靈活的應用程序編程接口,用於實現加密功能,包括數字簽名和信息摘要。Java密碼體系結構支持廠商的互操作性和軟硬件的實現。Java密碼體系結構的設計遵循兩個原則: ()算法的獨立性和可靠性()。通過定義加密服務類來獲得加密算法的獨立性和交互性。用戶只需要理解密碼算法的概念,而不需要關心如何實現這些概念的獨立性和交互性。加密服務提供程序是實現壹個或多個加密服務的壹個或多個包。軟件開發者將各種算法按照壹定的接口打包成壹個提供者,用戶可以安裝。使用不同的提供程序安裝和配置提供程序。您可以將包含提供者的ZIP和JAR文件放在類路徑中,然後編輯Java安全屬性文件,以便在定義提供者Java運行時環境Sun版本時設置默認的提供者Sun。
Java環境下的實現
加密過程的實現
Void idea_enc( int data [] /*要加密的位數據的首地址*/int key[]){ int I;int tmp x;int ZZ[]= new int[];for(I =;我& lt;I+=){/* Round cycle */for(int j = box = I;j & lt;j++ box++){ ZZ[j]= key[box];} x = handle_data(數據ZZ);tmp = data[];/*交換中間兩個*/data[]= data[];data[]= tmp;} tmp = data[];/*最後壹輪沒有交換*/data[]= data[];data[]= tmp;data[]= MUL(data[]key[]);data[]=(char)((data[]+key[])% x);data[]=(char)((data[]+key[])% x);data[]= MUL(data[]key[]);}
解密過程的實現
void key _ decrypt exp(int out key[])/*解密密鑰的逆處理*/{ int tmpkey[]= new int[];int I;for(I =;我& lt;i++){ tmpkey[I]= out key[wz _ sp key[I]];/* transposation */} for(I =;我& lt;i++){ out key[I]= tmp key[I];} for(I =;我& lt;i++){ out key[wz _ spaddrever[I]]=(char)(out key[wz _ spaddrever[I]]);/*替換為加法逆*/}(I =;我& lt;i++){ out key[wz _ spmulrevr[I]]=(char)(mulinuv(out key[wz _ spmulrevr[I]]));/*替換為乘法逆運算*/}}
四個總結
Lishi Xinzhi/Article/program/Java/hx/201311/27228