当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

基于Java的IDEA加密算法根究[Java编程]

赞助商链接



  本文“基于Java的IDEA加密算法根究[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

择要:本文介绍了在JAVA环境下若何实现IDEA对称加密算法.由于电子商务和电子政务的遍及,安全加密技术在此中利用非常遍及,对安全加密技术的要求也很高.目前在JAVA环境下实现IDEA加密具有很多的上风,因为JAVA是基于面向对象的编程语言,并且由于它的平台无关性能被大量利用于Internet的开辟.

关键字:IDEA(Internation Data Encryption Algorithm) JCA JCE 密钥 独立性 坚固性

随着Internet的疾速发展,电子商务的浪潮势不可挡,平常工作和数据传输都放在Internet网上举行传输,大大提高了效率,降低了本钱,创造了杰出的效益.但是,由于Internet网络协议本身存在侧重要的安全问题(IP包本身并不担当任何安全特点,很简单假造出IP包的地址、改正其内容、重播从前的包以及在传输途中拦阻并查看包的内容),使网上的信息传输存在宏大的安全风险电子商务的安全问题也越来越突出.加密是电子商务中最主要的安全技术,加密办法的选取直接影响电子商务活动中信息的安全程度,在电子商务系统中,主要的安全问题都可以通过加密来办理.数据的保密性可通过差别的加密算法对数据加密来实现.

对我国来说,固然可以引进很多的外国设备,但加密设备不能依靠引进,因为它触及到网络安全、国家奥秘信息的安全,所以必须自己研制.当前国际上有很多加密算法,此中DES(Data Encryption Standard)是创造最早的用得最遍及的分组对称加密算法,DES用56位蜜钥加密64位明文,输出64位密文,DES的56位密钥共有256 种大概的密钥,但历史上曾操纵穷举攻击破解过DES密钥,1998年电子边疆基金会(EFF)用25万美圆制造的专用计算机,用56小时破解了DES的密钥,1999年,EFF用22小时完成了破解工作,使DES算法遭到了严重打击,使它的安全性遭到严重威胁.因为JAVA语言的安全性和网络处理本领较强,本文主要介绍利用IDEA(Internation Data Encryption Algorithm )数据加密算法在Java环境下实现数据的安全传输.

1、IDEA数据加密算法

IDEA数据加密算法是由中国学者来学嘉博士和闻名的密码专家 James L. Massey 于1990年结合提出的.它的明文和密文都是64比特,但密钥长为128比特.IDEA 是作为迭代的分组密码实现的,利用 128 位的密钥和 8 个循环.这比 DES 供应了更多的 安全性,但是在挑选用于 IDEA 的密钥时,应当解除那些称为“弱密钥”的密钥.DES 只有四个弱密钥和 12 个次弱密钥,而 IDEA 中的弱密钥数相当可观,有 2 的 51 次方个.但是,假如密钥的总数非常大,到达 2 的 128 次方个,那么仍有 2 的 77 次方个密钥可供挑选.IDEA 被认为是极其安全的.利用 128 位的密钥,蛮力攻击中需求举行的测试次数与 DES 相比会明显增大,乃至答应对弱密钥测试.并且,它本身 也显示了它特别能抵挡专业情势的解析性攻击.

2、Java密码体系和Java密码扩大

Java是Sun公司开辟的一种面向对象的编程语言,并且由于它的平台无关性被大量利用于Internet的开辟.Java密码体系(JCA)和Java密码扩大(JCE)的计划目的是为Java供应与实现无关的加密函数API.它们都用factory办法来成立类的例程,然后把实际的加密函数拜托给供应者指定的底层引擎,引擎中为类供应了服务供应者接口在Java中实现数据的加密/解密,是利用其内置的JCE(Java加密扩大)来实现的.Java开辟工具集1.1为实现包含数字签名和信息择要在内的加密功效,推出了一种基于供应商的新型机动利用编程接口.Java密码体系构造支持供应商的互操作,同时支持硬件和软件实现.Java密码学构造计划遵守两个原则:(1)算法的独立性和坚固性.(2)实现的独立性和彼此作用性.算法的独立性是通过定义密码服务类来得到.用户只需理解密码算法的概念,而不用去关心若何实现这些概念.实现的独立性和彼此作用性通过密码服务供应器来实现.密码服务供应器是实现一个或多个密码服务的一个或多个程序包.软件开辟商按照一定接口,将各种算法实现后,打包成一个供应器,用户可以安装差别的供应器.安装和配置供应器,可将包含供应器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个供应器.Java运行环境Sun版本时,供应一个缺省的供应器Sun.

3、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]] ));/*替换成乘法逆*/
}
}

4、总结

在实际利用中,我们可以利用Java开辟工具包(JDK)中内置的对Socket通信的支持,通过JCE中的Java流和链表,加密基于Socket的网络通信.我们知道,加密/解密是数据传输中保证数据完好性的常用办法,Java语言因其平台无关性,在Internet上的利用非常之遍及.利用Java实现基于IDEA的数据加密传输可以在差别的平台上实现并具有实现简便、安全性强等长处.


  以上是“基于Java的IDEA加密算法根究[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>基于java的图片文件格局转换和线性缩放</b>
  • 基于Java 2运行时安全模子的线程合作
  • 深化浅出基于Java的责任链情势
  • 深化浅出基于Java的制作筹划情势
  • 操纵SWT开辟基于Java的图形用户界面
  • 深化浅出基于Java的代理筹划情势
  • 构建自己的基于Java的超级计算机
  • 基于Java的IDEA加密算法根究
  • 基于Java的UDP协议程序筹划初探
  • 基于Java的动画编程底子(一)
  • 基于Java的动画编程底子(二)
  • 深化浅出基于Java的注释器筹划情势
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .