加密是保护java代码的好方法吗?

加密是保护java代码的好方法吗?,java,reflection,encryption,Java,Reflection,Encryption,我有一个软件,我不想让别人破解。当然,我知道如果你向公众发布,没有什么是真正不可破解的。然而,我想要的东西,至少会使它有点难以做到这一点。我听说过加密,我认为这是个好主意。但是,您必须调用defineClass方法才能开始加密(您可以中断此调用)。尽管如此,我还是在考虑使用反射并直接调用它。那个电话还能被打断吗?加密是保护程序的好方法。答案是: 不是用java 当您将程序打包到可运行的jar文件中时,所有类都在其中。但是作为字节码 将字节码转换为java文件是可能的,但不是那么容易阅读。合法用户

我有一个软件,我不想让别人破解。当然,我知道如果你向公众发布,没有什么是真正不可破解的。然而,我想要的东西,至少会使它有点难以做到这一点。我听说过加密,我认为这是个好主意。但是,您必须调用defineClass方法才能开始加密(您可以中断此调用)。尽管如此,我还是在考虑使用反射并直接调用它。那个电话还能被打断吗?加密是保护程序的好方法。

答案是:

不是用java

当您将程序打包到可运行的jar文件中时,所有类都在其中。但是作为字节码


将字节码转换为java文件是可能的,但不是那么容易阅读。

合法用户如何解密代码以运行它?我发布代码的对象是相当多的程序员(以及一个破解软件的小组)。是的,你仍然可以中断所有这些,然后“等待”让你的代码解密真正的代码。无论您做什么,这仍然是可能的(在Java中甚至更容易,因为您可以“简单地”编写自己的JVM)。如果你不希望其他人能够阅读你的代码,不要给他们:将其作为服务托管并提供API。基本上,如果你想保持代码的私有性,就不要向公众发布Java可执行文件。这不仅适用于Java可执行文件,对所有类型的可执行文件都是如此。但是对于Java来说,它甚至比大多数其他平台更容易(因为文件格式和机器规范定义得非常好,“二进制”格式包含大量元数据)。编写自己的类加载器并从普通jar文件以外的地方加载加密代码怎么样?@code:I将重新定义
ClassLoader.defineClass()
将提供给它的
字节[]
转储到文件系统中,我将把你所有的美味代码放在一个盘中(至少由你自己的聪明的类加载器解密)。