ClassFinal

Java 字节码加密工具
授权协议 Apache
开发语言 Java
所属分类 程序开发、 加密/解密软件包
软件类型 开源软件
地区 国产
投 递 者 王才英
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

ClassFinal是一款Java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework,可避免源码泄漏或字节码被反编译。

项目模块说明

  • classfinal-core: ClassFinalde的核心模块,几乎所有加密的代码都在这里;
  • classfinal-fatjar: ClassFinal打包成独立运行的jar包;
  • classfinal-maven-plugin: ClassFinal加密的maven插件;

功能特性

  • 无需修改原项目代码,只要把编译好的jar/war包用本工具加密即可。
  • 运行加密项目时,无需求修改tomcat,spring等源代码。
  • 支持普通jar包、springboot jar包以及普通java web项目编译的war包。
  • 支持spring framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。
  • 支持maven插件,添加插件后在打包过程中自动加密。
  • 支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。

环境依赖

JDK 1.8 +

本工具使用AES算法加密class文件,密码是保证不被破解的关键,请保存好密码,请勿泄漏。

密码一旦忘记,项目不可启动且无法恢复,请牢记密码。

本工具加密后,原始的class文件并不会完全被加密,只是方法体被清空,保留方法参数、注解等信息,这是为了兼容spring,swagger等扫描注解的框架; 方法体被清空后,反编译者只能看到方法名和注解,看不到方法的具体内容;当class被classloader加载时,真正的方法体会被解密注入。

  • ClassFinal是一款Java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework,可避免源码泄漏或字节码被反编译。 项目模块说明 classfinal-core: ClassFinalde的核心模块,几乎所有加密的代码都在这里; classfinal-fatjar: ClassFinal打包成独立运行的jar包; class

  •               https://www.zhihu.com/question/307716152/answer/1213750791 作者:不带你这样的 链接:https://www.zhihu.com/question/307716152/answer/1213750791 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。   正好这段时间研究了下,商

  • 前言: 最近公司突然对代码混淆关注起来了,不混淆不能发版,调研发现 java 主流的混淆用 proguard,配置起来发现不太好用;后来偶然发现一个 classfinal 工具包,本质上 classfinal 是对生成的 jar 或者 war 重新加密生成一个新包;加密比混淆更高端,肯定是满足混淆要求的。 1.简介 ClassFinal是一款java class文件安全加密工具,支持直接加密jar

  • 来源:https://zhidao.baidu.com/question/397935417.html final class怎么调用 亲,涉及到的知识点如下: 1.final修饰类 不能被继承,也没有子类。 【使用环境】: 1.不是专门为继承而设计的类,类的本身方法之间有复杂的调用关系。假如随意创建这些类的子类,子类可能会错误的修改父类的实现细节 2.出于安全原因,类的实现细节不允许有任何改动

  • 昨天有人问我这个问题,在java中这不是个问题,因为有final关键字,而C++11中也有final关键字。 比如 class finalClass final {  }; 但C++11之前呢,如何实现? 首先想到的是可以将构造函数声明为private的,这样是可以阻止被别人继承,但这个类用起来也是很不方便,只能通过static成员函数来得到一个对象指针。 如果要在栈上定义一个对象都做不到,太麻烦

  • 控制力更强。如果一开始就不想派生,最开始的基类设置为非虚函数就可以了,final一般用于中途终止派生。 作用是 1.禁用重写 使派生类重写该虚函数。 class Super {   public:     Supe();     virtual void SomeMethod() final; }; 2.禁用继承 用来修饰类,让该类不能被继承. class Super final {   //..

  • 有时候我们希望一个类不能被别的类继承,这种类称为final类,在C++11标准之前要实现这种技术,需要巧妙地利用一些细节。 如何使得一个类不能被继承但又不影响该类的使用呢?这里的方法我们需要用到多级继承技巧。首先我们要明确以下几点: 1)如果类的构造函数或析析构函数声明为私有的,那么该类不能被继承,但同时该类也不能使用; 2)派生类只能访问基类的公有成员和保护成员,如果是私有继承,基类中所有成员到

  • 1.什么是final类? Java中有一些类,如String,Math等,就是final类的典型例子。 虽然在Java编程中并不经常使用final类和final方法,但它们有着与众不同的特点,即final类不能被继承,不能被覆盖,以及final类在执行速度方面比一般类快。 2.为何不能继承final类? 有时需要对继承加以限制。 例如某些处理特殊运算和操作的类,为了安全理由,不允许被其他类所继承。

  •    根据上下文环境,java的关键字final也存在着细微的区别,但通常指的是“这是无法改变的。”不想改变的理由由两种:一种是效率,另一种是设计。由于两个原因相差很远,所以关键子final可能被吴用。    接下来介绍一下使用到fianl的三中情况:数据,方法,类。       final数据    许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时数据的恒定不变是很有用的,例如

  • Java 中常见的 final 类 java.lang 包 public final class Boolean extends Object implements Serializable, Comparable public final class Byte extends Number implements Comparable public final class Character ex

  • 你总以为你会了,其实你只是一知半解。 final 关键字概览 final关键字可用于声明属性、方法、参数和类,分别表示属性不可变、方法不可覆盖、参数不可变和类不可以继承。 我们来分别看看它的用法。 final关键字是一个比较简单的知识点,所以这篇文章我写的比较舒服,你看着也比较舒服。因为,很简单呀~ final 属性 被final修饰的属性不可变。这种不可变的属性,我们可以称之为“常量”。这种常量

  • final final 是 Java 中的一个关键字,简而言之,final 的作用意味着“这是无法改变的”。 不过由于 final 关键字一共有三种用法,它可以用来修饰变量、方法或者类,而且在修饰不同的地方时,效果、含义和侧重点也会有所不同,所以我们需要把这三种情况分开介绍。 final 修饰变量 关键字 final 修饰变量的作用是很明确的,那就是意味着这个变量一旦被赋值就不能被修改了,也就是说

  • 编程过程中经常用的static,final关键字,也经常听到同事谈起这些词,到底他们怎么样呢,JVM中class类文件结构可以找到答案。 ConstantValue属性 ConstantValue属性的作用是通知虚拟机自动为静态变量赋值,只有被static修饰的变量才可以使用这项属性。非static类型的变量的赋值是在实例构造器方法中进行的;static类型变量赋值分两种,在类构造器中赋值,或使用

  • Variable ‘i’ is accessed from within inner class, needs to be final or effectively final class Sample{ public static void main(String[] args) { final CountDownLatch count = new CountDownLa

  • 1: final作用于类名之后,表示这个类不能被继承, 如下代码: #include <iostream> using namespace std; class A13 { public: A13() { cout << "default constructor" << endl; } int say() { cout << "say" << endl; return 0;

  • 在构造函数(注意:init 块和给成员变量(属性)赋初值的语句,都是构造函数的一部分)中使用 this 时,可能会出现这个警告。如果不理会,可能导致访问到未初始化的成员变量。Java 中,它们可以是未赋初值或赋值为 null 的引用类型;Kotlin 中,可以是 lateinit var 或未赋值或赋值为 null 的可空类型。 事实上,在构造函数中使用 this,即便这个类是 final 的(K

 相关资料
  • 问题内容: 我已经以加密格式将用户密码存储在数据库中。但是,现在,当用户想要登录并尝试输入其原始密码时,该代码始终会将输入的(原始)密码与数据库中存储的加密版本进行比较,从而导致登录失败。 请告诉我如何比较输入的(原始)密码和存储在数据库中的加密密码。 问题答案: 几乎可以肯定,您应该对密码进行 哈希处理 ,而不是使用可逆加密。您可能还需要 用盐 来做…在这种情况下,正确的步骤是: 查找最初对密码

  • 在FTPS中,密码在尝试通过internet连接服务器时被加密。这就是我所理解的,如果我的理解有任何遗漏,请更正。我的问题是,当我厌倦了模拟它(FTPs和FTP)时,我只是得到一条消息,说SSL已经建立(以及基于隐式和显式调用的端口更改)。 是否有任何其他方式来确认密码是真正加密的,或者我们可以看到密码时,它的普通FTP。下面是我在服务器端看到的日志 启用FTP时的服务器日志- 状态:TLS/SS

  • cmf_password($pw, $authCode = '') 功能 CMF密码加密方法 参数 $pw: string 要加密的原始密码 $authCode: string 加密字符串 返回 string 加密后的密码 例子 echo cmf_password('666666');

  • 问题内容: 我在C#中有一个应用程序,它使用RijndaelManaged 加密 部分文件 (因为它们是大文件)。因此,我将文件转换为字节数组并仅对其一部分进行加密。 然后,我想使用Java解密文件。因此,我只需要解密用C#加密 的文件的一部分 (意味着那些字节)。 问题来了。因为在C#中,我们 有无符号字节 ,在Java中,我们有 符号字节 。因此,我的加密和解密无法按照我想要的方式工作。 在C

  • 编辑:FXML文件

  • 问题内容: 我正在尝试学习如何使用Java进行基于密码的加密。我在网上找到了几个示例,但在Stack Overflow上还没有(到目前为止)。这些示例对我的解释不大,尤其是在算法选择方面。似乎有很多传递字符串来说明要使用什么算法,但是很少有关于字符串来自何处以及含义的文档。而且似乎不同的算法可能需要KeySpec类的不同实现,所以我不确定哪种算法可以使用我正在查看的PBEKeySpec类。此外,所

  • 问题内容: 我需要访问joomla用户表以从外部php脚本[codeignitor]进行登录检查。 joomla这样存储密码 看起来这不是正常的MD5,所以我无法使用。 创建密码的可能方式是什么? 谢谢。 问题答案: Joomla密码是经过MD5哈希处理的,但是在哈希处理之前,已对密码进行了固定处理。它们被存储在数据库中,因为此盐是长度为32个字符的随机字符串。 因此,要创建一个新的密码哈希, 编

  • 我们是ActiveMQ新手,已经阅读了关于加密密码的文档。 本文档介绍如何设置环境变量(即ACTIVEMQ\u ENCRYPTION\u PASSWORD)以保存加密密码,启动ACTIVEMQ,然后取消设置该环境变量。但是,在服务器重启的情况下,这将如何工作呢?我们无法将该加密密码放入任何systemd服务文件。 我们的安全策略不允许加密密码保留在任何配置或设置文件中,特别是因为解密机制也可以通过