「java实现混淆」Java 混淆

博主:adminadmin 2022-11-30 04:17:06 56

今天给各位分享java实现混淆的知识,其中也会对Java 混淆进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

javaweb项目做混淆的详细步骤

混淆的工具很多,最常用的为retroguard.

Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。反编译工具有很多种,其中非常强大的一种是 jad。

为了避免出现这种情况,保护开发者的劳动,又有一种叫做 Java 混淆器的工具被开发出来。Java 混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂。Java 混淆器也有很多种,其中比较强大的一种是 RetroGuard(只说比较强大是因为我对其功效还是有些怀疑的)。

这里我介绍一下 RetroGuard 的使用方法。

将下载的 .tar.gz 或者 .zip 文件解压。有用的只有 retroguard.jar 一个文件,其它的是源代码和文档。

RetroGuard 是针对 jar 文件做混淆的。使用之前需要先配置一下。可以手工编辑配置文件,更好的方法是使用 RetroGuard 提供的 GUI 工具来生成配置文件。使用方法如下:

java -classpath retroguard.jar;xxx.jar;yyy.zip;... RGgui

然后在 GUI 的 Wizard 中设置各个参数。上面的 -classpath 中应该列出要混淆的 jar 所依赖的所有的包。

RGgui 的详细使用方法可以看 RetroGuard 的文档 docs.html。

配置文件生成后,就可以运行 RetroGuard 进行混淆了。使用方法如下:

java -classpath xxx.jar;yyy.zip;... RetroGuard vvv-unofb.jar vvv.jar vvv.rgs vvv.log

其中 vvv-unofb.jar 是未混淆的 jar 文件,vvv.jar 是混淆后生成的 jar 文件,vvv.rgs 是配置文件,vvv.log 是日志文件。缺省的配置文件名称为 script.rgs,缺省的日志文件名称为 retroguard.log。

在生成配置文件时需要注意的是:

1、所有 public 的类名、方法名、变量名应该全部保留。因为所有设置为 public 的内容代表了整个包对外表现的接口。若某个内容不想为外界访问,就不应该设置为 public 的。

2、若包中某个类使用了 java.lang.Class 或者 java.lang.ClassLoader 中的某个方法加载了一个类,若这个类在包外,不需要特别处理;若这个类在包内,则需要保留这个类的类名,否则混淆后会找不到这个类。

3、在包中的所有调试信息(源文件名、行号、变量/参数信息等等)应全部删除。

使用java如何运用混淆算法生成二维码

需要的jar: qrcode.jar和 qrcode_swetake.jar,以及一个工具类,下面有。

package com.sbm.wll.image;

/**

* Java 生成二维码,解析二维码

*/

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

import jp.sourceforge.qrcode.QRCodeDecoder;

import jp.sourceforge.qrcode.exception.DecodingFailedException;

public class Image {

/**

* 生成二维码图片文件

*

* @param content

* 存储内容

* @param imgPath

* 图片路径

* @param imgType

* 图片类型

* @param size

* 二维码尺寸

*/

public void encoderQRCode(String content, String imgPath, String imgType, int size) {

try {

BufferedImage bufImg = this.qRCodeCommon(content, imgType, size);

File imgFile = new File(imgPath);

// 生成二维码QRCode图片

ImageIO.write(bufImg, imgType, imgFile);

System.out.println("二维码生成成功,路径:" + imgPath);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 生成二维码,流输出

*/

public void encoderQRCode(String content, OutputStream output, String imgType, int size) {

try {

BufferedImage bufImg = this.qRCodeCommon(content, imgType, size);

// 生成二维码QRCode图片

ImageIO.write(bufImg, imgType, output);

System.out.println("二维码生成成功,流输出");

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 生成二维码(QRCode)图片的基本方法

*/

private BufferedImage qRCodeCommon(String content, String imgType, int size) {

BufferedImage bufImg = null;

try {

Qrcode qrcodeHandler = new Qrcode();

// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小

qrcodeHandler.setQrcodeErrorCorrect('M');

qrcodeHandler.setQrcodeEncodeMode('B');

// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大

qrcodeHandler.setQrcodeVersion(size);

// 获得内容的字节数组,设置编码格式

byte[] contentBytes = content.getBytes("utf-8");

// 图片尺寸

int imgSize = 67 + 12 * (size - 1);

bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);

Graphics2D gs = bufImg.createGraphics();

// 设置背景颜色

gs.setBackground(Color.WHITE);

gs.clearRect(0, 0, imgSize, imgSize);

// 设定图像颜色 BLACK

gs.setColor(Color.BLACK);

// 设置偏移量,不设置可能导致解析出错

int pixoff = 2;

// 输出内容 二维码

用java实现js混淆器

简单的思路就是把所有的回车空格换行等一应格式全部去掉

然后把所有变量名字全都替换成无任何意义的简单字母和符号

这样可以让大多数人看的很头大了

求教Java web项目一般怎样做代码混淆或加密

一、java web项目混淆

proguard4.8工具,说是支持war的,可混淆过后少了classes目录了,自然成功不了。网上搜的过程不详说了,最后找着--“J2EE-web工程ProGuard代码混淆07_28”,网址:

根据提示一步步完成。

把web项目打成jar包后用proguard进行混淆,然后把混淆过后的class目录替换发布包war中的对应目录,启动运行是正常的。

主要注意利用proguard生成xxx.pro文件,然后手动加工-keep class WebRoot.WEB-INFO.lib.* 等项目中不需要混淆的包和类。

二、java web项目打成.exe

没找到免费的,这搜到个收费的--Jinstall,试了下功能挺好,

可以加密、集成jdk、tomcat,如果数据库是mysql也集成,其他数据库的话要设置数据库的url.

JAVA 有对源代码进行混淆的混淆器么

不需要对源代码混淆。class有这种功能的,在J2ME中混淆是必须的,结果跟你说的一样,不过原理不是你那么走的,混淆以后的class反编译也会让人看不懂,全部变成了a,b,c,d这样的名字。

JAVA怎么混淆

远标教育为你解答一下:ProGuard,推荐,有图形界面,功能强大,DIY首先;Android项目默认混淆器

关于java实现混淆和Java 混淆的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-30,除非注明,否则均为首码项目网原创文章,转载请注明出处。