关于自定义ClassLoader的文件取反加密与解密

这篇博客介绍了如何自定义ClassLoader实现文件的加密和解密。通过位运算符`^`实现简单加密,创建解密类进行解密操作。在测试过程中,博主强调了路径设置和类名匹配的重要性,以避免NoClassDefFoundError错误。
摘要由CSDN通过智能技术生成

最近学习到了自定义ClassLoader,根据老师教授的对文件的解密加密,自己实现了许多,下面说说比较关键的几个点。

1.怎么取反?

先来了解一下" ^ "这个操作符,位或与,对于二进制数来说,相同为0,不同为1。
比如11111和10101进行这个位或与操作,结果是01010,经过尝试你会发现: 一个数与一个全是1的数进行位或与操作,结果必然是它本身所有位取反。
因此,等会我们 只需要把我们的数据与一个全是1 的数位或与即可实现取反操作,实现简单的加密操作。
通常,我们都会使用16进制的ff充当这个全是1的数,因为一个f二进制是1111,而两个就是1111 1111,这样八位刚好就是一个字节。所以等会就用 : 数据^0xff 对数据取反加密,0x表示16进制。

2.自定义ClassLoader

public Class<?> loadClass(String name) throws ClassNotFoundException {
   
    return loadClass(name, false);
}

把自己的类继承ClassLoader然后重写loadClass()方法,最后通过路径加载类就好了 loadclass(String name)。具体的等会看我代码。

3.先对文件加密

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 对文件进行取反加密,生成新的加密文件。该class的目的为encrpt
 * @author 王大爷
 *
 */
public class 文件取反加密01 {
   
	public static void main(String[] args) {
   
		encrpt("C:\\Users\\王大爷\\Desktop\\java\\java练习\\Helloworld.class"                 //生成新的加密文件
				,"C:\\Users\\王大爷\\Desktop\\java\\java练习\\tem\\Helloworld.class");
	}
	public static void encrpt(String src,String dest) {
   
		try(InputStream is=new FileInputStream(src);
			OutputStream os=new FileOutputStream(dest);) {
   
			int len=-1;
			while((len=is.read())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值