jfinalQ开发教程03-加密部署
来源:互联网 发布:sqlserver count 编辑:程序博客网 时间:2024/04/29 10:54
jfinalQ-encrypt
1.简介
加密class文件,防止反编译,可自定义加密解密算法,支持tomcat部署,非spring框架。
2.原理
首先将class文件进行字节流加密,
然后自定义tomcat的ClassLoader,
最后通过自定义的ClassLoader解密并加载class。
3.下载
已经开源到github,地址:https://github.com/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.zencrypted_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.controllerencrypted_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.com/jfinalQ
源码:https://github.com/uikoo9/jfinalQ
更多精彩内容:http://uikoo9.com/
求打赏(长按图片即可识别)~ 捐助列表:http://uikoo9.com/donate/
- jfinalQ开发教程03-加密部署
- jfinalQ开发教程04-jfinal配置和jfinalQ文件结构
- jfinalQ开发教程01-表命名规范和代码生成
- jfinalQ开发教程05-qiao-util.jar:常量和配置文件
- jfinalQ开发教程06-qiao-util.jar:日志和缓存
- jfinalQ开发教程07-qiao-util.jar:邮件和短信
- jfinalQ开发教程09-qiao-util.jar:其他工具
- jfinalQ开发教程02-权限系统和一对多的处理
- jfinalQ开发教程08-qiao-util.jar:多线程和定时任务
- jfinalQ开发教程10-qiao.js:js工具和bootstrap封装
- Windows 7部署Android开发环境教程
- python开发环境部署以及调试教程
- Android开发环境部署搭建教程
- APNS部署教程3(APP开发)
- APNS部署教程4(服务器/Provider开发)
- Swift开发教程--如何对字符串进行md5加密
- J2ME中文教程 10 MIDlet的开发流程与部署
- 教程:如何用Axis2开发和部署Web服务
- 进程&线程(持续更)
- Matlab小程序-正弦波线性组合频谱图
- 产品思维------三维思考模型
- jfinalQ开发教程02-权限系统和一对多的处理
- neutron(1)veth pair
- jfinalQ开发教程03-加密部署
- iOS开发之日期
- 二、Python课程【初级篇】
- jfinalQ开发教程04-jfinal配置和jfinalQ文件结构
- github在window7环境搭建
- WPF路线图白皮书: 2015及未来
- 19-陋室铭
- 默认拷贝构造函数,浅拷贝,深拷贝
- Redis RDB文件格式全解析