如何保护/加密Java类?

如何保护/加密Java类?,java,encryption,classloader,protection,Java,Encryption,Classloader,Protection,不久前,在我的工作中,我需要保护一些类,以防其他人阅读代码。为此,我创建了一个EncryptedClassLoader,它加载以前加密的类,也可以加载普通(未加密)类。 以这种方式工作有点复杂,测试也有点复杂(编译,然后加密,然后解密) 有没有免费的框架来做我需要的,并且很容易处理?我的意思是,不仅混淆,而且加密文件,所以没有人可以读取或调试这部分代码。如果我可以轻松地更改加密密钥(在我的应用程序中,它是硬编码的),那也太好了 提前感谢。加密不会给混淆增加太多安全性。任何能够运行您的程序的人都可

不久前,在我的工作中,我需要保护一些类,以防其他人阅读代码。为此,我创建了一个EncryptedClassLoader,它加载以前加密的类,也可以加载普通(未加密)类。 以这种方式工作有点复杂,测试也有点复杂(编译,然后加密,然后解密)

有没有免费的框架来做我需要的,并且很容易处理?我的意思是,不仅混淆,而且加密文件,所以没有人可以读取或调试这部分代码。如果我可以轻松地更改加密密钥(在我的应用程序中,它是硬编码的),那也太好了


提前感谢。

加密不会给混淆增加太多安全性。任何能够运行您的程序的人都可以将解密后的字节码转储到磁盘。我想这就是为什么加密字节码不是很常见的原因,比如签名


如果您确实想加密字节码,请确保您也对其进行了模糊处理,我认为您当前使用的方法在不添加任何框架或库的情况下可以正常工作。

加密不会给模糊处理增加太多安全性。任何能够运行您的程序的人都可以将解密后的字节码转储到磁盘。我想这就是为什么加密字节码不是很常见的原因,比如签名


如果您确实想加密字节码,请确保您也对其进行了混淆,我认为您当前使用的方法在不添加任何框架或库的情况下可以正常工作。

简短回答,您不能。加密不起作用。以下是一篇老掉牙的文章,讲述了为什么:

不幸的是,你错了, 都认为你是 首先提出这个想法,然后 认为它确实有效。和 原因与天气无关 加密方案的强度


你可以把它弄糊涂,但那只会走到这一步,最终我坚信你的时间最好花在修复bug或添加功能上。

简而言之,你不能。加密不起作用。以下是一篇老掉牙的文章,讲述了为什么:

不幸的是,你错了, 都认为你是 首先提出这个想法,然后 认为它确实有效。和 原因与天气无关 加密方案的强度


你可以混淆它,但那只会走到这一步,最终我坚信你的时间最好花在修复bug或添加功能上。

保护代码的唯一方法就是不允许用户运行它。销售对在线服务的访问权,而不是分发应用程序。然后,您的代码被放在服务器上,您要公开的唯一内容就是接口


另一种方法是用合同和律师来保护代码,但除非你写的东西真的很好,否则这将使你付出比你本来损失的收入更多的代价。

保护代码的唯一方法就是不允许用户运行它。销售对在线服务的访问权,而不是分发应用程序。然后,您的代码被放在服务器上,您要公开的唯一内容就是接口


另一种方法是用合同和律师来保护你的代码,但是除非你写了一些非常好的东西,否则这将使你付出比你失去的收入更多的代价。

我们使用这个库来加密我们的jar文件。没有混淆,只有加密。没有更改加密密钥的选项,但是将永远不会调用defineClass()。

我们使用库来加密jar文件。没有混淆,只有加密。没有更改加密密钥的选项,但将永远不会调用defineClass()。

您可以尝试,它通过修改JVM来加密和解密类数据,而不是用Java编写的类加载器,使本机类加载器能够有效地保护您的Java代码

您可以尝试,它通过修改JVM来加密和解密类数据,而不是用Java编写的类加载器,从而生成一个本机类加载器,可以有效地保护您的Java代码

,因为每个罐头都有一个开罐器。如果类可以在JVM中执行,则可以通过某种方式获取其内容。考虑一个被黑客攻击的OpenJDK,它将被加载的类的代码转储,例如,作为一个简单的例子。如果你的代码是如此之大以至于需要加密,你最好只给算法IMHO提供版权保护:对于每一个CAN都有一个开罐器。如果类可以在JVM中执行,则可以通过某种方式获取其内容。考虑一个被黑客攻击的OpenJDK,它抛出了被加载的类的内脏,例如,作为一个简单的例子。如果你的代码非常好,需要加密,你最好只给算法IMHO提供版权:它是一个小而容易使用的工具。它是一个小而容易使用的工具。