基于Java的IDEA加密算法探讨

http://tech.ddvip.com   2006年11月27日    社区交流

本文详细介绍基于Java的IDEA加密算法探讨

  三、Java环境下的实现

  1.加密过程的实现

void idea_enc( int data11[], /*待加密的64位数据首地址*/ int key1[]){
 int i ;
 int tmp,x;
 int zz[]=new int[6];
 for ( i = 0 ; i < 48 ; i += 6) { /*进行8轮循环*/
  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.解密过程的实现

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开发工具包(JDK)中内置的对Socket通信的支持,通过JCE中的Java流和链表,加密基于Socket的网络通信.我们知道,加密/解密是数据传输中保证数据完整性的常用方法,Java语言因其平台无关性,在Internet上的应用非常之广泛.使用Java实现基于IDEA的数据加密传输可以在不同的平台上实现并具有实现简洁、安全性强等优点。

责编:豆豆技术应用

正在加载评论...