`
wuhua
  • 浏览: 2114603 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java技术进阶 基于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 是作为迭代的分组密码实现的,使用 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;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的数据加密传输可以在不同的平台上实现并具有实现简洁、安全性强等 优点。

2
1
分享到:
评论

相关推荐

    基于Java的IDEA加密算法探讨

    本文介绍了在JAVA环境下如何实现IDEA对称加密算法。由于电子商务和电子政务的普及,安全加密技术在其中应用非常广泛,对安全加密技术的要求也很高。目前在JAVA环境下实现IDEA加密具有很多的优势,因为JAVA是基于面向...

    基于Java的IDEA加密算法探讨.pdf

    本文探讨了基于Java的IDEA加密算法的应用,讨论了数据加密的概念、加密技术和IDEA数据加密算法的原理。同时,文章还介绍了Java密码体系和Java密码扩展的设计原则和实现方法。 1. 数据加密的概念 数据加密是指对...

    2022年基于Java的IDEA加密算法Java教程.docx

    《2022年基于Java的IDEA加密算法Java教程》 在信息技术日益发达的今天,加密算法成为保障网络安全、尤其是电子商务领域信息安全的关键技术。本文主要探讨了在Java环境中如何运用IDEA(International Data ...

    Java 的IDEA 加密算法加密和数字签名编程

    ### Java 环境下IDEA加密算法及数字签名编程详解 #### 一、加密的必要性和可探究性 随着互联网技术的飞速发展,尤其是电子商务和电子政务的普及,安全加密技术的应用变得越来越广泛。在这样的背景下,对加密技术的...

    idea加密算法--经典分组加密

    IDEA加密算法基于16轮的Feistel网络结构,每一轮都由多个子函数组成,包括异或(XOR)、替换(Substitution)和置换(Permutation)操作。这些操作相互结合,使得算法复杂且难以破解。以下是IDEA加密过程的主要步骤...

    idea 加密算法C语言源程序

    idae 加密算法的C源程序,可以在各种UNIX平台编译使用

    论文研究-针对IDEA加密算法的差分功耗攻击.pdf

    研究分析国际数据加密算法IDEA的特点,采用差分功耗分析攻击方式进行密钥破解,针对IDEA算法提出一种基于汉明距离的差分功耗攻击方法。该攻击方法是一种典型的加密芯片旁路攻击方式,其理论基础为集成电路中门电路在...

    IDEA.rar_IDEA加密_IDEA解密算法_idea_java idea

    总的来说,这个压缩包提供了一个基于 Java 的 IDEA 加密解密实现,对于想要了解 IDEA 算法工作原理,或者希望在 Java 应用中集成加密功能的开发者来说,是一个宝贵的资源。通过阅读和分析这个项目的代码,可以深入...

    IDEA加密算法

    IDEA是一种由8个相似圈(Round)和一个输出变换(Output Transformation)组成的迭代算法。IDEA的每个圈都由三种函数:模(216+1)乘法、模216加法和按位XOR组成。

    Java 的IDEA 加密算法、加密和数字签名编程

    目前在JAVA环境下实现IDEA 加密具有很多的优势,因为JAVA 是基于面向对象的编程语言, 并且由于它的平台无关性能被大量应用于 Internet 的开发。密码学中的加密和数字签名是一种与消息认证码结合使 用以确保消息...

    IDEA数据加密算法实现.rar

    IDEA(International Data Encryption Algorithm,国际数据加密算法)是一种对称密钥加密算法,由瑞士联邦理工学院的Lai Xuejia和Martin Hellman在1990年提出。它设计初衷是作为DES(Data Encryption Standard)的一...

    IDEA算法(java)

    综上所述,IDEA在Java环境中的实现涉及了Java加密框架的理解,密钥管理,以及加密解密的具体步骤。虽然IDEA曾是安全加密的一个强有力的选择,但在现代加密需求中,可能需要结合更先进的算法和安全策略来确保数据的...

    IDEA加密算法以及PPT讲解

    在压缩包中的“IDEA加密算法实现代码”可能是用某种编程语言(如Python、Java、C++等)编写的IDEA加密和解密函数,供学习者参考和实践。通过阅读和理解代码,可以更深入地了解IDEA的工作原理,并且能够实际应用到...

    在Oracle数据库中实现的IDEA加密算法

    以Java代码的形式在Oracle数据库中实现了IDEA算法的加密与解密。IDEA是International Data Encryption Algorithm 的缩写,是1990年由瑞士联邦技术学院来学嘉X.J.Lai 和Massey提出的建议标准算法称作PES( Proposed ...

    论文研究-一种基于IDEA的十进制短分组加密算法.pdf

    基于IDEA算法,提出了一种新颖的十进制短分组加密技术。针对十进制数运算的特点,在加密算法中定义了三种新的运算,并从理论上证明新的运算能保证十进制加密算法的可逆性。将该算法应用于短分组加密仿真系统中的结果...

    基于Java的加密算法演示项目.zip

    基于Java的加密算法演示项目 项目介绍 本项目是一个专注于展示和实践各种加密算法的Java项目。通过不同的示例代码,项目涵盖了Base64、DES、IDEA、MD5、RSA和SHA1等多种加密算法的实现。每个示例都详细展示了如何...

    IDEA加密算法原理.doc

    IDEA加密算法原理.doc

    IDEA加密算法源代码 JAVA版

    IDEA(Integrated Data ...总之,IDEA加密算法的JAVA源代码为开发者提供了一种实现和研究高级加密技术的途径,通过阅读和分析源码,可以提升加密安全领域的专业技能,同时也为开发安全的Java应用程序奠定了基础。

Global site tag (gtag.js) - Google Analytics