Java加密解密 – 自界说类加载器的应用
当前位置:以往代写 > JAVA 教程 >Java加密解密 – 自界说类加载器的应用
2019-06-14

Java加密解密 – 自界说类加载器的应用

Java加密解密 – 自界说类加载器的应用

JAVA是表明执行的语言,对付差异的操纵平台都有相应的JVM对字节码文件举办表明执行。而这个字节码文件,也就是我们平时所看到的每一个.class文件。这是我们各人都知道的知识,也就是由.java文件,颠末编译器编译,酿成JVM所能表明的.class文件。而这个进程,在此刻果真的网络技能中,操作一个反编译器,任何人都可以很容易的获取它的源文件。这对付许多人来说是不但愿看到的。对付加密解密技能,我懂的不多,有些可以操作某种技能“恍惚”JAVA类文件。这样可以或许使反编译的难度增加。但预计反编译器的技能程度也在不绝晋升,导致这种要领层层受阻。别的尚有许多其他的技能也可以实现对JAVA文件的加密解密。我此刻所想要研究的,就是个中的一种。JAVA的机动性使反编译变得容易,同时,也让我们的加密解密的要领变得机动。操作自界说的CLASSLOADER。

JAVA中的每一个类都是通过类加载器加载到内存中的。对付类加载器的事情流程如下暗示:

1.searchfile()

找到我所要加载的类文件。(抛除JAR包的观念,此刻只是要加载一个.class文件)

2.loadDataClass()

读取这个类文件的字节码。

3.difineClass()

加载类文件。(加载的进程其实很巨大,我们此刻先不研究它。)从这个进程中我们能很清楚的发明,自界说的类加载可以或许很轻松的节制每个类文件的加载进程。这样在第二步(loadDataClass)和第三步(difineClass)之间,我们将会有本身的空间机动的节制这个进程。我们加密解密的技能就应用到这里。加密解密 JAVA加密解密的技能有许多。JAVA本身提供了精采的类库对各类算法举办支持。对付回收哪种算法,网络上说法纷歧。下面用DES对称加密算法(设定一个密钥,然后对所有的数据举办加密)来简朴举个例子。首先,生成一个密钥KEY。

我把它生存到key.txt中。这个文件就象是一把钥匙。谁拥有它,谁就能解开我们的类文件。

代码参考如下:

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));
    fo.write(rawKeyData);
  }
  public static void main(String args[]) {
    try {
      new Key("key.txt");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

    关键字:

在线提交作业