技术也可以实现对JAVA文件
加密解密。我现在所想要研究
,就是其中
一种。JAVA
灵活性使反编译变得容易,同时,也让我们
加密解密
方法变得灵活。利用自定义
CLASSLOADER。 JAVA是解释执行
语言,对于不同
操作平台都有相应
JVM对字节码文件进行解释执行。而这个字节码文件,也就是我们平时所看到
每一个.class文件。这是我们大家都知道
常识,也就是由.java文件,经过编译器编译,变成JVM所能解释
.class文件。而这个过程,在现在公开
网络技术中,利用一个反编译器,任何人都可以很容易
获取它
源文件。这对于很多人来说是不希望看到
。对于加密解密技术,我懂
不多,有些可以利用某种技术“模糊”JAVA类文件。这样能够使反编译
难度增加。但估计反编译器
技术水平也在不断提升,导致这种方法层层受阻。另外还有很多其他
技术也可以实现对JAVA文件
加密解密。我现在所想要研究
,就是其中
一种。JAVA
灵活性使反编译变得容易,同时,也让我们
加密解密
方法变得灵活。利用自定义
CLASSLOADER。 字串9
JAVA中
每一个类都是通过类加载器加载到内存中
。对于类加载器
工作流程如下表示: 字串9
1.searchfile()
找到我所要加载
类文件。(抛除JAR包
概念,现在只是要加载一个.class文件) 字串6
2.loadDataClass() 字串4
读取这个类文件
字节码。 字串9
3.difineClass() 字串4
加载类文件。(加载
过程其实很复杂,我们现在先不研究它。)从这个过程中我们能很清楚
发现,自定义
类加载能够很轻松
控制每个类文件
加载过程。这样在第二步(loadDataClass)和第三步(difineClass)之间,我们将会有自己
空间灵活
控制这个过程。我们加密解密
技术就应用到这里。加密解密 JAVA加密解密
技术有很多。JAVA自己提供了良
类库对各种算法进行支持。对于采用哪种算法,网络上说法不一,自己去GOOGLE一下吧。下面用DES对称加密算法(设定一个密钥,然后对所有
数据进行加密)来简单举个例子。首先,生成一个密钥KEY。
字串6
我把它保存到key.txt中。这个文件就象是一把钥匙。谁拥有它,谁就能解开我们
类文件。
字串8
代码参考如下: 字串4
package com.neusoft.jiami;
import java.io.File;
import java.io.FileOutputStream;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
class Key {
private String keyName;
public Key(String keyName) {
this.keyName = keyName;
}
public void createKey(String keyName) throws Exception {
// 创建一个可信任
随机数源,DES算法需要
SecureRandom sr = new SecureRandom();
// 用DES算法创建一个KeyGenerator对象
KeyGenerator kg = KeyGenerator.getInstance("DES");
// 初始化此密钥生成器,使其具有确定
密钥长度
kg.init(sr);
// 生成密匙
SecretKey key = kg.generateKey();
// 获取密钥数据
byte rawKeyData[] = key.getEncoded();
// 将获取到密钥数据保存到文件中,待解密时使用
FileOutputStream fo = new FileOutputStream(new File(keyName)); 字串7
fo.write(rawKeyData);
}
public static void main(String args[]) {
try {
new Key("key.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
} 字串1
![我要研发网[www.51dev.com]](/templets/images/toplogo.gif)
