了解下JAVA的JAVA加密解密:自界说类加载器使用
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。比来在研讨JAVACLASSLOADING手艺,已完成了一个自界说的加载器。对今朝自界说加载器的使用,还在切磋中。上面是自界说的CLASSLOADER在JAVA加密解密方面的一些研讨。JAVA平安
JAVA是注释实行的言语,关于分歧的操纵平台都有响应的JVM对字节码文件举行注释实行。而这个字节码文件,也就是我们平常所看到的每个.class文件。
这是我们人人都晓得的知识,也就是由.java文件,经由编译器编译,酿成JVM所能注释的.class文件。
而这个历程,在如今公然的收集手艺中,使用一个反编译器,任何人都能够很简单的猎取它的源文件。这关于良多人来讲是不但愿看到的。
关于加密解密手艺,我懂的未几,有些能够使用某种手艺“含混”JAVA类文件。如许可以使反编译的难度增添。但估量反编译器的手艺程度也在不休提拔,招致这类办法层层受阻。别的另有良多其他的手艺也能够完成对JAVA文件的加密解密。我如今所想要研讨的,就是个中的一种。
JAVA的天真性使反编译变得简单,同时,也让我们的加密解密的办法变得天真。
使用自界说的CLASSLOADER
参照:http://www.blogjava.net/realsmy/archive/2007/04/18/111582.html
JAVA中的每个类都是经由过程类加载器加载到内存中的。关于类加载器的事情流程以下暗示:
1.searchfile()
找到我所要加载的类文件。(抛除JAR包的观点,如今只是要加载一个.class文件)
2.loadDataClass()
读取这个类文件的字节码。
3.difineClass()
加载类文件。(加载的历程实在很庞大,我们如今先不研讨它。)
从这个过程当中我们能很分明的发明,自界说的类加载可以很轻松的把持每一个类文件的加载历程。如许在第二步(loadDataClass)和第三步(difineClass)之间,我们将会有本人的空间天真的把持这个历程。
我们加密解密的手艺就使用到这里。
加密解密
JAVA加密解密的手艺有良多。JAVA本人供应了优秀的类库对各类算法举行撑持。关于接纳哪一种算法,收集上说法纷歧,本人往GOOGLE一下吧。
上面用DES对称加密算法(设定一个密钥,然后对一切的数据举行加密)来复杂举个例子。
起首,天生一个密钥KEY。
我把它保留到key.txt中。这个文件就象是一把钥匙。谁具有它,谁就可以解开我们的类文件。代码参考以下:
packagecom.neusoft.jiami;importjava.io.File;importjava.io.FileOutputStream;importjava.security.SecureRandom;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;classKey{privateStringkeyName;publicKey(StringkeyName){this.keyName=keyName;}publicvoidcreateKey(StringkeyName)throwsException{//创立一个可托任的随机数源,DES算法必要SecureRandomsr=newSecureRandom();//用DES算法创立一个KeyGenerator对象KeyGeneratorkg=KeyGenerator.getInstance("DES");//初始化此密钥天生器,使其具有断定的密钥长度kg.init(sr);//天生密匙SecretKeykey=kg.generateKey();//猎取密钥数据byterawKeyData[]=key.getEncoded();//将猎取到密钥数据保留到文件中,待解密时利用FileOutputStreamfo=newFileOutputStream(newFile(keyName));fo.write(rawKeyData);}publicstaticvoidmain(Stringargs[]){try{newKey("key.txt");}catch(Exceptione){e.printStackTrace();}}
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作, 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种使用者不需花费很多时间学习的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
页:
[1]
2