在JVM类加载器中,我们介绍除了最基础的3种类加载器互相配合进行加载的,我们如果有必要,是加入自己定义的类加载器。
这里我们就来自定义一个类加载器,用于实现对类进行加密和解密处理。
首先新建一个User.java
文件,其中内容具体如下:
package com.rockvine.loader;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class User {
private String name = "Rocky";
private int age = 18;
// 省略Getter、Setter方法
// ...
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
选中User.java
文件,在菜单栏的Build
中,点击 ReCompile 'User.java'
,即可编译获取到User.class
文件。
然后对编译生成的User.class
进行加密,至于加密方法使用最简单的方式进行演示,利用Java位运算符中的 ^ 按位异或
运算进行处理,一个数异或同一个数两次,结果还是那个数。
然后直接将的User.class
移动至项目中,然后将其复制一份重命名为UserSrc.class
,再利用异或操作来覆盖原User.class
文件。
public class XorEncryptUtil {
// 异或操作, 可以进行加密和解密
private static void xor(InputStream in, OutputStream out) throws Exception {
int ch;
while (