欧杵乡
摘要:随着Java技术的广泛应用和发展,对于Java应用程序的安全问题逐步得到重视,相关安全技术也逐步改进中。文章主要探讨了Java软件的加密方法及应用,以供参考。
关键词:Java软件;加密;方法
中图分类号:TP311.52 文献识别码:A 文章编号:1001-828X(2016)005-000-01
Java的安全性都是借助手动安装安全管理器执行安全措施,并非自动运行。而安全措施都是都是依赖于代码的来源进行授权,根据代码来源设定相应的资源访问权限,有助于保证应用程序的安全运行。Java的安全性是Java语言的重要组成部分,它自身内置多种安全特性,因此要进行合理加密,方可有效保证Java应用程序的安全。
一、 Java特性分析
(一)操作相对简单
Java操作相对简单,只要具备C语言基础,稍加学习基本就可以掌握操作方法。而且其在设计过程中所面向的对象是数据和数据接口,可以实现即插即用,其在使用过程中采用类机制,为系统提供一类对象的原型,在继承以及承载机制的支持下可以对父类进行重新定义,得到一个新的子类,这一过程中实际上就是代码复用过程。
(二)对内存进行自动管理
可以对内存进行自动管理,对于一些无用内存直接回收,开发工作因此被简化。最初所使用的垃圾回收技术显然不具备这种优势,由于占用系统过多资源导致整个系统运行速度都受到影响,而Java对这种回收技术进行升级,定期对系统内的单元进行检查,并自动回收一些无用单元,程序的稳定性明显提升。
(三)稳定性和安全性
非法访问内存使我们在使用程序过程中会经常遇到的问题,实际上就是程序指针的出现错误,而Java就可以解决这一问题,因为其并不使用指针算术法,而是将真正的数组提供给程序。同时,在对象类型转换过程中,指针不会替换数组中的任意数,因此编程工作量大大减少,运行错误率降低,系统稳定性明显提升。另外,Java设计的最终目标是为设计者提供一个可靠的计算环境,因此安全性是非常重要的,要保证其在使用过程不受到病毒侵袭。验证技术的使用就可以满足这种安全需要,该技术的基础为公钥加密,对于各类安全策略的实施具有重要意义。
(四)解释执行
如果机器已经安装解释器,其就可以发挥自身的解释功能,实现字节代码的执行,可以不必对其进行重新编译。解释器具有向上兼容的特征,就是说低版本可以在高版本环境下正常运行,但是如果将高版本放在低版本环境下运行,就有可能出现不兼容现象。同时Java还可以适应跨异构环境,典型特征就是可以实现一次编译、到处运行,只要系统安装Java虚拟机,无论主机以及处理器为何种类型,都不会影响Java的运行,这也是其受到企业青睐的主要原因。使用Java所开发出来的系统几乎可以实现“零移植”,也就是平时我们所说的平滑移植,只要简单修改一下配置文件即可。
二、Java软件的加密方法
(一) BASE
BASE是典型对称加密算法,该技术已十分成熟,属于一种属于编码格式的加密方法,是目前最为常用的加密方式,能对Bit字节代码进行加密,能对HTTP环境下的信息进行标识加密,使编码数据不会被人用肉眼所直接看到。例如,在JavaPersistence系统Hibernate中加密方式,就是利用Base将唯一标识符编码加密,使其无法被直接读取。
(二)MD
MD加密方法是当前最为广泛使用的杂凑算法之一,加密效果好,且对于保证传输数据的完整性有着显著效果,很多主流软件都利用了MD加密方式。MD在JAVA中的应用能生成与软件相互对应的固定长度的MD值,在使用中需要验证MD值是否一致。MD加密方式具有较强的抗修改性,并且想要伪造MD值数据,获取原数据的MD值也非常困难。在JAVA中的应用,可用于大数据数字前面软件签署秘钥,非常值得推广和应用。
(三)SHA
SHA加密安全性和稳定性好,主要适用于数字签名标准里面定义的数字签名算法。该加密方式被需要加密专家研究并完善,其技术已非常成熟,被广泛应用。SHA是生成个位的信息摘要明文,然后在以不可逆的方式将其转为为一段密文,而想要读取数据就要取得一串输入码,进行密文的验证。并且这种加密方式中,生成的密文长度较短、位数固定、管理方便,且不易破解,能大大提高软件安全性。
三、类文件加密方法分析
加密Java类文件可以有效防止其被反编译,保护Java软件的安全,经过加密以后,文件的格式发生变化,特征也与以往有明显不同,即使对其进行反编译,所得到的原代码也是没有价值的。JEC属于扩展平台,其中包含着多种加密算法,而且操作简便;而AES属于一种高级加密算法,前面提到过其具有对称性的特征,加密效率很高,安全性也较好,加密系统中可以将这两种加密方式结合起来使用,提升加密的可靠性。
传统的DES加密算法之所以被取代,是因为其只包含了56位秘钥,随着计算机技术的提高,系统的计算能力明显增强,完全可以凭借其强大的计算能力将其破解,而其本身结构又比较紧凑,一旦修改一些细节,整体性就会被破坏。AES加密算法就弥补了以上不足,其采用128、192及256比特的秘钥,具体算法原理如下:加密秘钥在扩展算法的计算下得到轮秘钥,其总位数等于分组长度与轮数的乘积再加上1。这种算法有一个优势就是即使扩展算法被修改,其影响的也只是与其对应部分的加密工作,其他部分并不会受到影响,不仅不会破坏整体性,算法的扩展性也大大增强。
但是加密组件的工作并不仅仅是完成类文件的加密,同时还要对加密秘钥进行二次加密,这一环节是非常有必要的,因为AES的高安全性是建立在加密秘钥安全的前提下,秘钥中同时包含了加密和解密,一旦秘钥被窃取,之前所有工作就都失去了意义。对秘钥进行二次加密时,采用字符串变换函数的方式,按照一定的规律对其进行转换,转换以后的字符串是没有任何意义的,虽然其复杂程度不高,但是可以满足实际需要。
类文件经过筛选以后,在加密系统的作用下完成加密工作,这一过程需要筛选器提供支持,其会生成一种特定规则作为加密条件,如果其有加密的需要,AES加密组件就会完成加密工作,如果其没有加密的需要,则原class文件就会被保存下来。如果秘钥和密码相同,在对数据进行加密和解密时,要求密码对象采用一样的方式,将Cipher初始化,然后读取类文件数据,明确哪些数据是需要加密的,然后就正式开始加密工作,加密完的文件会被自动保存,将原始类文件覆盖掉。
四、结束语
综上所述,Java语言是目前较为常用的软件开发语言,编程相对简单,软件开发周期短,成本低。但是,由于Java语言的特点,导致Java软件易于破解及遭受到攻击。为了保证Java软件安全性必须采取必要的加密措施,利用多种加密方法,对软件进行加密保护。
参考文献:
[1]杨卓林.基于java的手机短信加密技术探讨[J].科技信息,2014(07).
[2]于守良.关于Java面向对象程序设计课程的思考[J].中国教育技术装备,2013(15).