JAVA環(huán)境下如何實現(xiàn)IDEA加密算法

因為JAVA是基于面向對象的編程語言,所以在JAVA環(huán)境下實現(xiàn)IDEA加密具有很多的優(yōu)勢,再加上JAVA語言的安全性和網(wǎng)絡處理能力較強,被大量應用于Internet的開發(fā)中。那么我們今天就來看看JAVA環(huán)境下如何實現(xiàn)IDEA加密算法。

一、IDEA加密算法

IDEA 加密算法是作為迭代的分組密碼實現(xiàn)的,使用128 位的密鑰和8 循環(huán)。這比DES 提供了更多的 安全性,但是在選擇用于 IDEA 的密鑰時,應該排除那些稱為“弱密鑰”的密鑰。

DES 加密算法只有四個弱密鑰和12 個次弱密鑰,而 IDEA加密算法 中的弱密鑰數(shù)相當可觀,有2 的51次方個。但是,如果密鑰的總數(shù)非常大,達到2的128 次方個,那么仍有2的77 次方個密鑰可供選擇。IDEA加密算法被認為是極為安全的。使用128 位的密鑰,蠻力攻擊中需要進行的測試次數(shù)與 DES 相比會明顯增大,甚至允許對弱密鑰測試。而且,它本身也顯示了它尤其能抵抗專業(yè)形式的分析性攻擊。

、JAVA環(huán)境下如何實現(xiàn)IDEA加密算法

1、加密過程的實現(xiàn) 

void idea_enc( int data11[], /*待加密的64位數(shù)據(jù)首地址*/ int key1[]){

int i ;

int tmp,x;

int zz[]=new int[6];

for ( i = 0 ; i < 48 ; i += 6) { /*進行8輪循環(huán)*/

for(int j=0,box=i;j<6;j++,box++){

zz[j]=key1[box];

}

x = handle_data(data11,zz);

tmp = data11[1]; /*交換中間兩個*/

data11[1] = data11[2];

data11[2] = tmp;

}

tmp = data11[1]; /*最后一輪不交換*/

data11[1] = data11[2];

data11[2] = tmp;

data11[0] = MUL(data11[0],key1[48]);

data11[1] =(char)((data11[1] + key1[49])%0x10000);

data11[2] =(char)((data11[2] + key1[50])%0x10000);

data11[3] = MUL(data11[3],key1[51]);

}

2、解密過程的實現(xiàn) 

void key_decryExp(int outkey[])/*解密密鑰的變逆處理*/

{ int tmpkey[] = new int[52] ;

int i;

for ( i = 0 ; i < 52 ; i++) {

tmpkey[i] = outkey[ wz_spkey[i] ] ;/*換位*/

}

for ( i = 0 ; i < 52 ; i++) {

outkey[i] = tmpkey[i];

}

for ( i = 0 ; i < 18 ; i++) {

outkey[wz_spaddrever[i]] = (char)(65536-outkey[wz_spaddrever[i]]) ;/*替換成加法逆*/

}

for ( i = 0 ; i < 18 ; i++){

outkey[wz_spmulrevr[i]] =(char)(mulInv(outkey[wz_spmulrevr[i]] ));/*替換成乘法逆*/

}

}

在實際應用中,我們可以使用Java開發(fā)工具包(JDK)中內置的對Socket通信的支持,通過JCE中的Java流和鏈表,加密基于Socket的網(wǎng)絡通信,我們知道,加密、解密是數(shù)據(jù)傳輸中保證數(shù)據(jù)完整性的常用方法,Java語言因其平臺無關性,在Internet上的應用非常之廣泛,使用Java實現(xiàn)基于IDEA的文件加密傳輸可以在不同的平臺上實現(xiàn)并具有實現(xiàn)簡潔、安全性強等優(yōu)點。

小知識之Java:

Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言,是由Sun Microsystems公司于1995年5月推出的Java程序設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。