|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最初被命名为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中。这个文件就象是一把钥匙。谁具有它,谁就可以解开我们的类文件。代码参考以下:
[code]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开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作, |
|