标题:
基于Java的IDEA加密算法探讨分析
[打印本页]
作者:
qingqing3721
时间:
2011-9-7 15:24
标题:
基于Java的IDEA加密算法探讨分析
随着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环境下完成数据的安全传输。
一、IDEA数据加密算法
IDEA数据加密算法是由中国学者来学嘉博士和著名的密码专家 James L. Massey 于1990年结合提出的。它的明文和密文都是64比特,但密钥长为128比特。IDEA 是作为迭代的分组密码完成的,
1
运用 128 位的密钥和 8 个循环。这比 DES 提供了更多的 安全性,但是在选择用于 IDEA 的密钥时,应该排除那些称为“弱密钥”的密钥。DES 只要四个弱密钥和 12 个次弱密钥,而 IDEA 中的弱密钥数相当可观,有 2 的 51 次方个。但是,如果密钥的总数十分大,到达 2 的 128 次方个,那么仍有 2 的 77 次方个密钥可供选择。IDEA 被以为是极为安全的。运用 128 位的密钥,蛮力攻击中需要停止的测试次数与 DES 相比会分明增大,甚至允许对弱密钥测试。而且,它本身 也显示了它尤其能抵抗专业方式的剖析性攻击。
二、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。
三、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;j6;j++,box++){
zz[j]=key1[box];
}
x = handle_data(data11,zz);
tmp = data11[1]; /*交换中间两个*/
data11[1] = data11[2];
data11[2] = tmp;
}
欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/)
Powered by Discuz! 6.0.0