jfinalQ开发教程03-加密部署

编程入门 行业动态 更新时间:2024-10-14 18:18:25

jfinalQ-encrypt

1.简介

加密class文件,防止反编译,可自定义加密解密算法,支持tomcat部署,非spring框架。


2.原理

首先将class文件进行字节流加密,

然后自定义tomcat的ClassLoader,

最后通过自定义的ClassLoader解密并加载class。


3.下载

已经开源到github,地址:https://github/uikoo9/jfinalQ-encrypt


4.项目结构

QEncryptFrame.java是加密解密class的gui工具

QClassLoader.java是自定义的ClassLoader

loader.properties是配置文件

QClassUtil.java是加密解密算法,可以自行修改


准备工作

1.配置文件

配置文件中有两项:

encrypted_package=com.uikoo9.fore,com.uikoo9.manage,com.uikoo9.z
encrypted_class_path=Z\:/workspaces/jfinalq_01_blog/WebRoot/WEB-INF/classes/

encrypted_package

需要进行加密解密的包,

一般的javaee项目都比较大,对整个项目进行加密解密是不现实的,所以推荐对核心代码进行加密解密,

这里的包名就是核心代码的包名,多个包名用逗号分隔。

encrypted_class_path

tomcat中项目的classess文件夹路径


2.自定义加密解密算法

jfinalQ-encrypt中的加密解密算法如下:

package com.uikoo9;

/**
 * 加密解密程序,可以自己定义算法
 * @author qiaowenbin
 */
public class QClassUtil {
	
	/**
	 * 加密程序,可以自己修改
	 * @param ch
	 * @return
	 */
	public static byte encrypt(int ch){
		return (byte) (ch + 2);
	}
	
	/**
	 * 解密程序,可以自己修改
	 * @param ch
	 * @return
	 */
	public static byte decrypt(int ch){
		return (byte) (ch - 2);
	}
	
}

可以看到就是简单的对字节流进行移位,可以自己定义加密解密算法。


3.生成class代码

如果使用eclipse等,可以clean一下项目,这时会自动生成项目所有的class文件,

然后将需要加密的class文件拷贝出去,例如拷贝到e:/test下,

然后将需要加密的class文件拷贝出去,例如拷贝到e:/test下,

然后将需要加密的class文件拷贝出去,例如拷贝到e:/test下


加密代码

1.加密代码

以一个blog项目为例,项目结构:

这里选择加密com.uikoo9.fore.controller包,

所以需要修改之前提到的配置文件中:

encrypted_package=com.uikoo9.fore.controller

运行QEncryptFrame.java文件,如下:

其中e:/test下为要加密的包,如下:

点击加密按钮,会提示加密成功。


2.复制代码

将加密成功的class代码复制到tomcat部署项目中,如下

注意覆盖完成后,不要做修改代码,clean等操作,否则加密后的class会被再次覆盖。

注意覆盖完成后,不要做修改代码,clean等操作,否则加密后的class会被再次覆盖。

注意覆盖完成后,不要做修改代码,clean等操作,否则加密后的class会被再次覆盖。


自定义ClassLoader

1.修改配置文件

将配置文件进行对应的修改,加密包修改为对应的包,class路径修改为tomcat中项目路径,

encrypted_package=com.uikoo9.fore.controller
encrypted_class_path=Z\:/workspaces/jfinalq_01_blog/WebRoot/WEB-INF/classes/


2.打包

将jfinalQ-encrypt中的loader包和QClassUtil打包为一个jar,如下:

注意,只需要打包com.uikoo9.loader下的文件和QClassUtil,配置文件也要打包进去,

注意,只需要打包com.uikoo9.loader下的文件和QClassUtil,配置文件也要打包进去,

注意,只需要打包com.uikoo9.loader下的文件和QClassUtil,配置文件也要打包进去,


3.定义tomcat的loader

修改tomcat/conf/context.xml文件,添加如下代码:

<Loader loaderClass="com.uikoo9.loader.QClassLoader" delegate="true"></Loader>

添加完后,如下:


4.关于loader的jar命名

上面的Loader将tomcat的loader指向了com.uikoo9.loader.QClassLoader,

其实就是tomcat去tomcat/lib文件夹下去找这个类,

所以这个jar的命名是无关,这里将jar命名为了类似tomcat自带jar,tomcat-i18n-ia.jar,如下:


访问和校验

1.访问

启动tomcat,访问项目,发现可以正常访问,如下:


2.校验

用Java Decompiler对com.uikoo9.fore.controller下的class进行反编译,发现:

也就是没办法反编译了。


end

至此,对tomcat下非spring项目的加密部署实现。

至此,对tomcat下非spring项目的加密部署实现。

至此,对tomcat下非spring项目的加密部署实现。


jfinalQ2.0

官网:http://uikoo9/jfinalQ

源码:https://github/uikoo9/jfinalQ


更多精彩内容:http://uikoo9/


求打赏(长按图片即可识别)~
捐助列表:http://uikoo9/donate/

更多推荐

jfinalQ开发教程03-加密部署

本文发布于:2023-06-14 06:34:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1446905.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:教程   jfinalQ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!