公司给了我一个任务,要对java代码进行加密,避免其他人拿到公司产品反编译。
目前考虑的方案的是:
java文件编译为class文件之后,使用加密工具加密,然后编写classloader,其中读取文件解密成bytecode的部分使用c语言编写,然后java classloader通过jni的方式调用。
貌似一个完美的解决方案,但是读了http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.html?page=1文章之后,我彻底崩溃了,难道真的没有合理的解决方案了么
这篇文章提到破解上述方案的方法:
因为classloader最终都要调用defineClass,而多个defineClass方法最终都会调用defineClass(String, byte[], int, int, ProtectionDomain)
,所以只要重写jdk中的defineClass(String, byte[], int, int, ProtectionDomain)
方法实现,就可以将你的原始class bytecode暴露无遗,此时再做反编译即可。
作者还提到了另一个方法 自定义 JVMPI 代理来处理JVMPI_EVENT_CLASS_LOAD_HOOK事件,也可以做到破解
.
作者最后给的结论是:maybe Java was born to be a language for pure open source development after all。
要解决,可以考虑.net等开发语言。
相关推荐
java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密...
"java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...
java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法...
在"research_encrypt-code"这个压缩包中,很可能包含了Java实现同态加密算法的源代码,包括密钥管理、加密、解密和操作加密数据的函数。通过研究这些代码,我们可以深入了解如何在实际应用中利用Java来构建安全的...
Java中的URL加密处理是网络安全传输数据的一个重要环节,它可以防止敏感信息在传输过程中被窃取或篡改。本文将深入探讨如何使用Java实现URL加密,特别是基于Base64编码和编码转换的方式。我们将重点关注以下几个方面...
主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
### Java Socket 使用加密协议传输对象:深入解析与实践 在当今互联网时代,数据安全成为企业和个人用户关注的焦点。在Java开发中,Socket编程是一种常见的网络通信方式,它允许不同计算机上的应用程序通过网络进行...
本次使用JAVA语言,采用3DES加密算法进行对文本文件的加密,通过二进制和十六进制的转换来实现,产生加密文件,再对加密文件进行解密。 关键词:DES加密算法、加密、解密。摘要 随着现代网络技术的飞速发展,人们...
本项目"用Java实现的图片加密程序"正是关注这一主题,它利用Java的IO流处理技术,实现了对图片文件的加密和解密功能。以下是关于这个项目的一些详细知识点: 1. **Java IO流**:Java的IO流是处理输入输出的基础,它...
Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...
这种加密方式的安全性较高,因为即使加密数据被截获,没有相应的私钥也无法解密。在前后端开发中,RSA常用于敏感信息如密码的传输,确保数据在传输过程中的安全性。 在这个项目"Java RSA加密前后端实现"中,前端...
Java作为一种广泛使用的编程语言,提供了丰富的工具和库来实现数据的加密和解密。本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不...
java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种加密方式java三种...
本篇文章将深入探讨Java和C语言之间的加密规则,以及如何实现Java加密、C解密的互通性。 首先,我们需要了解加密的基本原理。加密是一种通过特定算法将明文(可读数据)转化为密文(不可读数据)的过程,以保护数据...
加密是将明文数据转换为无法轻易理解的密文,以保护数据的安全性。解密则是将密文还原为原始的明文。在ZIP压缩包中,我们可以使用标准的ZIP加密算法,如传统的ZIP 2.0加密或更安全的AES(Advanced Encryption ...
在Java编程环境中,数字证书是用于安全通信的重要工具,它们主要应用于加密、身份验证和数据完整性保护。在“JAVA使用数字证书加密文件”的主题中,我们聚焦于如何使用RSA算法结合数字证书对文件进行加密。RSA是一种...
本项目提供了四种常见的加密解密算法的Java实现:BASE64、AES、DES和MD5。接下来,我们将深入探讨这四种算法及其在Java中的应用。 首先,BASE64是一种编码方式,而非真正的加密算法。它将任意二进制数据转化为ASCII...
JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现
【标题】"背包加密JavaDemo"是一个基于Java实现的加密示例,它采用了非对称加密算法中的背包加密技术。这种加密方式与传统的对称加密不同,它利用了一种特殊的数学问题——背包问题,来实现数据的安全加密。非对称...
本资料包“加密典型代码(java)”旨在帮助开发者学习如何在Java环境中编写加密程序,包括有密钥和无密钥(也称为对称加密和非对称加密)两种主要的加密方式。 对称加密是基于相同的密钥进行数据加密和解密的方法,...