java加密算法有几种(web使用哪种加密算法)
大家好,关于java加密算法有几种很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于web使用哪种加密算法的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
java最常用的几种加密算法
简单的Java加密算法有:
第一种. BASE
Base是网络上最常见的用于传输Bit字节代码的编码方式之一,大家可以查看RFC~RFC,上面有MIME的详细规范。Base编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base来将一个较长的唯一标识符(一般为-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
第二种. MD
MD即Message-Digest Algorithm(信息-摘要算法),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD的前身有MD、MD和MD。
MD算法具有以下特点:
压缩性:任意长度的数据,算出的MD值长度都是固定的。
容易计算:从原数据计算出MD值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改个字节,所得到的MD值都有很大区别。
弱抗碰撞:已知原数据和其MD值,想找到一个具有相同MD值的数据(即伪造数据)是非常困难的。
强抗碰撞:想找到两个不同的数据,使它们具有相同的MD值,是非常困难的。
MD的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD以外,其中比较有名的还有sha-、RIPEMD以及Haval等。
第三种.SHA
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于^位的消息,SHA会产生一个位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
SHA-与MD的比较
因为二者均由MD导出,SHA-和MD彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
对强行攻击的安全性:最显著和最重要的区别是SHA-摘要比MD摘要长位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD是^数量级的操作,而对SHA-则是^数量级的操作。这样,SHA-对强行攻击有更大的强度。
对密码分析的安全性:由于MD的设计,易受密码分析的攻击,SHA-显得不易受这样的攻击。
速度:在相同的硬件上,SHA-的运行速度比MD慢。
第四种.HMAC
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。
JAVA使用什么加密算法和解密算法好
简单的Java加密算法有:
第一种. BASE
Base是网络上最常见的用于传输Bit字节代码的编码方式之一,大家可以查看RFC~RFC,上面有MIME的详细规范。Base编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base来将一个较长的唯一标识符(一般为-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
第二种. MD
MD即Message-Digest Algorithm(信息-摘要算法),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD的前身有MD、MD和MD。广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD后都能生成唯一的MD值。好比现在的ISO校验,都是MD校验。怎么用?当然是把ISO经过MD后产生MD的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD的串。就是用来验证文件是否一致的。
MD算法具有以下特点:
压缩性:任意长度的数据,算出的MD值长度都是固定的。
容易计算:从原数据计算出MD值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改个字节,所得到的MD值都有很大区别。
弱抗碰撞:已知原数据和其MD值,想找到一个具有相同MD值的数据(即伪造数据)是非常困难的。
强抗碰撞:想找到两个不同的数据,使它们具有相同的MD值,是非常困难的。
MD的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD以外,其中比较有名的还有sha-、RIPEMD以及Haval等。
第三种.SHA
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于^位的消息,SHA会产生一个位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
SHA-与MD的比较
因为二者均由MD导出,SHA-和MD彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
对强行攻击的安全性:最显著和最重要的区别是SHA-摘要比MD摘要长位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD是^数量级的操作,而对SHA-则是^数量级的操作。这样,SHA-对强行攻击有更大的强度。
对密码分析的安全性:由于MD的设计,易受密码分析的攻击,SHA-显得不易受这样的攻击。
速度:在相同的硬件上,SHA-的运行速度比MD慢。
第四种.HMAC
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。
Java技术进阶 基于Java的IDEA加密算法探讨
随着Internet的迅速发展电子商务的浪潮势不可挡日常工作和数据传输都放在Internet网上进行传输大大提高了效率降低了成本创造了良好的效益但是由于 Internet网络协议本身存在着重要的安全问题(IP包本身并不继承任何安全特性很容易伪造出IP包的地址修改其内容重播以前的包以及在传输途中拦截并查看包的内容)使网上的信息传输存在巨大的安全风险电子商务的安全问题也越来越突出加密是电子商务中最主要的安全技术加密方法的选取直接影响电子商务活动中信息的安全程度在电子商务系统中主要的安全问题都可以通过加密来解决数据的保密性可通过不同的加密算法对数据加密来实现
对我国来讲虽然可以引进很多的外国设备但加密设备不能依靠引进因为它涉及到网络安全国家机密信息的安全所以必须自己研制当前国际上有许多加密算法其中DES(Data Encryption Standard)是发明最早的用得最广泛的分组对称加密算法 DES用位蜜钥加密位明文输出位密文 DES的位密钥共有种可能的密钥但历史上曾利用穷举攻击破解过DES密钥年电子边境基金会(EFF)用万美元制造的专用计算机用小时破解了DES的密钥年 EFF用小时完成了破解工作使DES算法受到了严重打击使它的安全性受到严重威胁因为JAVA语言的安全性和网络处理能力较强本文主要介绍使用IDEA(Internation Data Encryption Algorithm)数据加密算法在Java环境下实现数据的安全传输
一 IDEA数据加密算法
IDEA数据加密算法是由中国学者来学嘉博士和著名的密码专家 James L Massey于年联合提出的它的明文和密文都是比特但密钥长为比特 IDEA是作为迭代的分组密码实现的使用位的密钥和个循环这比 DES提供了更多的安全性但是在选择用于 IDEA的密钥时应该排除那些称为弱密钥的密钥 DES只有四个弱密钥和个次弱密钥而 IDEA中的弱密钥数相当可观有的次方个但是如果密钥的总数非常大达到的次方个那么仍有的次方个密钥可供选择 IDEA被认为是极为安全的使用位的密钥蛮力攻击中需要进行的测试次数与 DES相比会明显增大甚至允许对弱密钥测试而且它本身也显示了它尤其能抵抗专业形式的分析性攻击
二 Java密码体系和Java密码扩展
Java是Sun公司开发的一种面向对象的编程语言并且由于它的平台无关性被大量应用于Internet的开发 Java密码体系(JCA)和Java密码扩展(JCE)的设计目的是为Java提供与实现无关的加密函数API它们都用factory方法来创建类的例程然后把实际的加密函数委托给提供者指定的底层引擎引擎中为类提供了服务提供者接口在Java中实现数据的加密/解密是使用其内置的JCE(Java加密扩展)来实现的 Java开发工具集为实现包括数字签名和信息摘要在内的加密功能推出了一种基于供应商的新型灵活应用编程接口 Java密码体系结构支持供应商的互操作同时支持硬件和软件实现 Java密码学结构设计遵循两个原则:()算法的独立性和可靠性()实现的独立性和相互作用性算法的独立性是通过定义密码服务类来获得用户只需了解密码算法的概念而不用去关心如何实现这些概念实现的独立性和相互作用性通过密码服务提供器来实现密码服务提供器是实现一个或多个密码服务的一个或多个程序包软件开发商根据一定接口将各种算法实现后打包成一个提供器用户可以安装不同的提供器安装和配置提供器可将包含提供器的ZIP和JAR文件放在CLASSPATH下再编辑Java安全属性文件来设置定义一个提供器 Java运行环境Sun版本时提供一个缺省的提供器Sun
三 Java环境下的实现
加密过程的实现
void idea_enc( int data []/*待加密的位数据首地址*/ int key []){int i;int tmp x;int zz[]=new int[ ];for( i=; i<; i+=){/*进行轮循环*/for(int j= box=i;j<;j++ box++){zz[j]=key [box];}x= handle_data(data zz);tmp= data [ ];/*交换中间两个*/data [ ]= data [ ];data [ ]= tmp;}tmp= data [ ];/*最后一轮不交换*/data [ ]= data [ ];data [ ]= tmp;data [ ]= MUL(data [ ] key [ ]);data [ ]=(char)((data [ ]+ key [ ])% x);data [ ]=(char)((data [ ]+ key [ ])% x);data [ ]= MUL(data [ ] key [ ]);}
解密过程的实现
void key_decryExp(int outkey[])/*解密密钥的变逆处理*/{ int tmpkey[]= new int[ ];int i;for( i=; i<; i++){tmpkey[i]= outkey[ wz_spkey[i] ];/*换位*/}for( i=; i<; i++){outkey[i]= tmpkey[i];}for( i=; i<; i++){outkey[wz_spaddrever[i]]=(char)( outkey[wz_spaddrever[i]]);/*替换成加法逆*/}for( i=; i<; i++){outkey[wz_spmulrevr[i]]=(char)(mulInv(outkey[wz_spmulrevr[i]]));/*替换成乘法逆*/}}
四总结
lishixinzhi/Article/program/Java/hx/201311/27228
关于java加密算法有几种到此分享完毕,希望能帮助到您。