如果你是一名java开发者,你应该知道java源文件编译后的class文件是十分轻易就可以反编译的,有很多java反编译工具都可以做到这一点,例如,jad,jd-gui等,所以如果你想保护你的java class文件不被其他人反编译的话,你需要使用一些java加密工具,不过并不是对java代码进行加密,因为加密的java文件是无法编译成可正常运行的class文件的,所以我们只能加密class文件,更专业一点的称谓,应该是说混淆java

class,也就是对class文件进行模糊处理,目的是为了让反编译者无法获取正确的java源代码,而且又不会影响java class文件的使用。

目前有很多工具可以混淆java class,流行的一点大多要收费的,不过有一款开源的混淆工具,也是基于java编写的,十分好用,它就是proguard。因为我们发布java应用程序的时候,都是选择将class文件打包在jar或者war文件,所以proguard支持对jar里的所有class进行混淆,下面是它的使用方法。

1.定义混淆配置文件

proguard使用后缀为.pro的文件作为配置文件,在这个文件里配置需要混淆的jar文件,混淆后输出的jar文件,混淆需要引用的java类库等。下面是一个示例

1

-injars

C:/Program Files/Java/jdk1.6.0_21/bin/retrace.jar

2

-outjars

C:/Program Files/Java/jdk1.6.0_21/bin/retrace-obfuscated.jar

3

-libraryjars

C:/Program Files/Java/jdk1.6.0_21/jre/lib/rt.jar

4

-libraryjars

C:/Program Files/Java/jdk1.6.0_21/bin/proguard.jar

5

-printmapping

proguard.map

6

-verbose

7

-keep

public class *

2.混淆

下载proguard后,解压将lib目录里的proguard.jar文件和pro配置文件复制到java安装目录的bin下,如果你设置了JAVA_HOME,也可以不用复制到该目录下,然后使用以下的命令来进行混淆,假设pro配置文件命名为myconfig.pro

1

java

-jar proguard.jar @myconfig.pro

3.验证

这时你可以使用jd-gui反编译工具来验证一下混淆结果,把混淆前和混淆后的jar拖到jd-gui工具,然后再对比源代码,你就可以知道混淆后反编译得到的与源代码差别很大。更重要的是,你要把混淆后的jar复制到你的项目,看是否还能够正常使用。

java 打包加密_java打包、加密、发布(源代码保护)相关推荐

  1. java 打包 根目录_java打包

    java打包 编译时打包: javac -d "要把包打到哪:盘符或者.(.表示当前目录)" 文件名.java 执行打包的.class文件 java -cp(cp代表临时的环境变量 ...

  2. java打包维护_java打包详解

    from yahh2008的blog:  http://www.matrix.org.cn/blog/yahh2008/ 兄弟,对java着迷吗,或者是为了自己的生计,不论怎样都欢迎你进入精彩java ...

  3. java 打包工具_Java打包Windows安装程序

    目前对于开发Windows桌面程序而言,Java Swing并不是最好的选择,但是对于Java/Android程序员来说,Swing是最快上手和最容易熟悉的语言,和Android类似,Swing也提供 ...

  4. java字符串加密_Java简单加密字符串

    1 设计思想 该问题要求输入一个字符串,然后把这个字符串的每一个字符加4,得到新的字符串. 我们设计一个函数,传入参数sring str,首先我们利用String类的方法toCharArray() 把 ...

  5. java 打包目录_Java打包文件目录问 zip文件

    Java打包文件目录问 zip文件. /** * 资源打包下载类 * Created by Ruan Banshu on 2015/4/13. */ public class ZipOpUtil { ...

  6. java string 加密_java字符串加密解密

    java字符串加密解密 try { String test = "123456789@fdj.com"; EncryptionDecryption des = new Encryp ...

  7. java access 密码_java 连接加密Access2007数据库时,不用输入用户名密码也能连上

    java 连接加密Access2007数据库时,不用输入用户名密码也能连上 我用Access2007做了一个加密的数据库,用的是Access本身的功能加密的.双击打开Database2.mdb文件时, ...

  8. java 打包运行_java 打包与运行

    问题1:java -jar xxx.jar,运行jar包没有主属性清单 解决:打开压缩包打开文件夹META-INF,找到MANIFEST.MF文件,增加: Main-Class: hadoop.Hdf ...

  9. 用java实现字符串的加密_JAVA 字符串加密、密码加密实现方法

    在我们的程序设计中,我们经常要加密一些特殊的内容,今天总结了几个简单的加密方法,分享给大家! 如何用java实现字符串简单加密解密?为保证用户信息安全,系统在保存用户信息的时候,务必要将其密码加密保存 ...

  10. java sha256 实现_JAVA SHA256加密代码实现

    //这里对密码进行加密,再存到数据库 String password3=StringEncrypt.Encrypt(password); //SHA256加密算法     public static ...

最新文章

  1. Ansible5:Ad-hoc常用模块
  2. python开发的优秀界面-八款常用的 Python GUI 开发框架推荐
  3. SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
  4. Velodyne收购高清地图公司 将研发更安全的ADAS系统
  5. 【BLE】关于蓝牙的一些学习资料分享
  6. 批量导入数据到mssql数据库的
  7. 职业相关课程学习笔记
  8. java如何让线程等待_如何使Java线程等待另一个线程的输出?
  9. 2013_warmup
  10. 关于vertical layout不能水平居中对齐的原因
  11. 图书管理系统的分析与设计
  12. 印象笔记导入html笔记,Evernote Importer|印象笔记导入
  13. Java程序员怎样考察报表工具的开发效率
  14. OSError: Unable to create file
  15. python数字转英文_GitHub - Ailln/en2an: 快速转化「英文数字」和「阿拉伯数字」
  16. strut2框架搭建
  17. anydesk 自建服务器,AnyDesk使用FRP自建远程桌面连接
  18. UG NX 12 点集
  19. R3300L运行CoreELEC, EmuELEC和Armbian
  20. chromedriver、geckodriver、MicrosoftWebDriver、IEDriverServer和operadriver之间的恩怨纠葛

热门文章

  1. linux zip文件解压命令详解
  2. QSS实践汇总(3)——QComboBox样式(风格)
  3. 视频教程-【国内首套H3C V7交换机实战课程-2】以太网端口和链路聚合配置与管理-H3C认证
  4. 多商家点餐小程序源码
  5. MSP430单片机 智能 温控风扇 DS18B20 无级调速 红外遥控器 IR ADC 滑动电位器 PWM调速
  6. Android 截屏监听分享
  7. 如何绕过校园网认证,不付费就可以使用自己的网络。
  8. 无线路由器CE认证是什么
  9. iOS开发者必备:五大编程类工具
  10. matlab仿真调速,直流调速系统的MATLAB仿真参考程序