`
温柔一刀
  • 浏览: 863196 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于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 环境下实现数据的安全传输。

  一、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.加密过程的实现
java 代码
  1. void idea_enc( int data11[], /* 待加密的64位数据首地址 */ int key1[])   
  2.     {       
  3.         int i ;    
  4.         int tmp,x;    
  5.         int zz[]=new int[6];    
  6.         for ( i = 0 ; i < 48 ; i += 6) { /* 进行8轮循环 */     
  7.             for(int j=0,box=i;j<6;j++,box++){   
  8.                 zz[j]=key1[box];     
  9.             }       
  10.             x = handle_data(data11,zz);    
  11.             tmp = data11[1]; /* 交换中间两个 */  
  12.             data11[1] = data11[2];       
  13.             data11[2] = tmp;       
  14.         }       
  15.         tmp = data11[1]; /* 最后一轮不交换 */      
  16.         data11[1] = data11[2];       
  17.         data11[2] = tmp;       
  18.         data11[0] = MUL(data11[0],key1[48]);      
  19.         data11[1] =(char)((data11[1] + key1[49])%0x10000);     
  20.         data11[2] =(char)((data11[2] + key1[50])%0x10000);     
  21.         data11[3] = MUL(data11[3],key1[51]);       
  22.     }     
  2.解密过程的实现
java 代码
  1. void key_decryExp(int outkey[])/* 解密密钥的变逆处理 */  
  2.     {   
  3.         int tmpkey[] = new int[52];   
  4.         int i;   
  5.         for (i = 0; i < 52; i++) {   
  6.             tmpkey[i] = outkey[wz_spkey[i]];/* 换位 */  
  7.         }   
  8.         for (i = 0; i < 52; i++) {   
  9.             outkey[i] = tmpkey[i];   
  10.         }   
  11.         for (i = 0; i < 18; i++) {   
  12.             outkey[wz_spaddrever[i]] = (char) (65536 - outkey[wz_spaddrever[i]]);/* 替换成加法逆 */  
  13.         }   
  14.         for (i = 0; i < 18; i++) {   
  15.             outkey[wz_spmulrevr[i]] = (char) (mulInv(outkey[wz_spmulrevr[i]]));/* 替换成乘法逆 */  
  16.         }   
  17.     }  

  四、总结

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

相关推荐

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

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

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

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

    加密解密算法(SHA1,CRC32,IDEA,AES)

    IDEA(国际数据加密算法)是一种对称加密算法,以其高效率和安全性著称。IDEA采用128位密钥,通过一系列复杂的操作,如异或、移位和加法,将64位的数据块加密为64位的密文。这种算法在早期的加密软件中广泛应用,但...

    cryptix_src_3-1-2.zip_SHA_SHA in java_java idea_md4_sha-1

    本文将深入探讨标题中提及的"cryptix_src_3-1-2.zip_SHA_SHA in java_java idea_md4_sha-1"所包含的知识点,主要关注Java中使用的加密算法以及相关源码。 1. **Java中的SHA(Secure Hash Algorithm)算法**: SHA...

    字符串加密算法详解.pdf

    本文将详细介绍几种常见的字符串加密方法及其应用特点,并重点探讨Java AES加密算法的工作原理和实现步骤。 #### 二、常见字符串加密方法及其特点 1. **异或加密(XOR Encryption)** - **原理**:将字符串中的每...

    IDEA加密.zip

    这通常通过加密算法实现,如AES(高级加密标准)或RSA等。 2. **IntelliJ IDEA的版本控制与安全**:IDEA支持多种版本控制系统,如Git、SVN等。开发者可以设置密码和SSH密钥来保护代码仓库。此外,IDEA还提供了内置...

    网络信息安全 DES及IDEA源码及实现

    本文将深入探讨这两种加密算法的原理、实现方式以及它们在Java环境下的应用。 **DES(Data Encryption Standard)** DES是一种块加密算法,由IBM在1970年代开发,并于1977年被美国国家标准局(NIST)采纳为联邦...

    java常用加密方式.pdf

    Java中常见的对称加密算法包括DES(Data Encryption Standard)、IDEA(International Data Encryption Algorithm)、RC2、RC4、SKIPJACK、RC5和AES(Advanced Encryption Standard)。其中,DES是早期的标准,已被...

    Idea 构建Maven 项目,AES ECB 加解密,二次开发Jmeter

    AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,用于保护数据的安全。ECB(Electronic Codebook)是AES的一种工作模式。在ECB模式下,数据被分成固定大小的块进行独立加密,但其缺点是相同的...

    基于JAVA开发的微票小程序

    Java提供了HTTPS协议支持和加密算法,确保数据传输的安全。此外,Spring Security或OAuth2等库可以帮助实现用户认证和授权。 7. **测试与调试**:JUnit和Mockito等工具用于单元测试,确保代码质量;而IntelliJ IDEA...

    PGP 加解密及签名验签示例

    它基于公开密钥加密算法,如RSA和IDEA,确保数据在传输过程中的安全性和完整性。在本示例中,我们将深入探讨PGP的核心功能:加解密和签名验证。 1. **PGP 公钥与私钥** - **公钥加密**:PGP系统中,每个人有一对...

    IDEA登陆注册页面.rar

    在本项目中,我们主要探讨如何使用IntelliJ IDEA(简称IDEA)开发一个基于Java的登陆注册页面,并集成MySQL数据库进行数据存储。这个过程涵盖了前端界面设计、后端业务逻辑处理以及数据库交互等多个关键环节。 首先...

    JAVA每日一题08

    总结来说,Java开发者需要理解源码分析的重要性,熟练掌握各种开发工具,并对加密算法有深入认识,如RSA。在处理敏感数据时,了解如何正确使用非对称加密算法可以提高应用程序的安全性。通过不断学习和练习,开发者...

    基于Java的视频会议系统(程序)

    本文将深入探讨Java在视频会议系统中的应用,包括核心技术、关键组件和实现策略。 1. **核心技术** - **网络编程**:Java的Socket编程是构建视频会议系统的基础,用于实现客户端与服务器之间的数据传输。 - **多...

    基于JAVA的学生成绩管理系统的设计与实现

    本文主要探讨了基于Java的学生成绩管理系统的设计与实现,旨在提供一个高效、易用且安全的平台,用于管理学生的学业成绩。Java作为一种跨平台的编程语言,其稳定性和可移植性为开发这样的系统提供了坚实的基础。 ...

    基于java的聊天系统的设计于实现(系统+论文).zip

    "基于Java的聊天系统的设计与实现(系统+论文)"这个标题表明了我们要探讨的是一个使用Java编程语言开发的聊天系统。它不仅涵盖了系统的实际构建过程,还包括了理论研究部分,即论文,这通常涉及到系统设计的理念、...

Global site tag (gtag.js) - Google Analytics