如何保护 Java class 文件中的逻辑?

How can one secure the logic in a Java class file?

我想 运行 第三方 Java 基础架构上的专有算法。他们给了我一个装有合适物品的罐子,供我构建 class。我的想法是给他们一个 class 来实现我的算法。

在 "decompiling?"

的易用性方面,编译的 Java class 与 jar 相比如何?

我认为保护自己的 IP 免受逆向工程的最好办法是 运行 通过混淆器对其进行处理,如 How to protect a Jar file from being decompiled?

中所述

除了因为他们的基础设施必须访问我的 class 中的命名方法,混淆器甚至提供 那个 级别的保护吗?或者,如果有人向另一方提供已编译的 Java class 是否实际上不需要对算法进行逆向工程?如果是后者,那么还有哪些其他方法可以提供更高的安全性?

(我意识到 所有 可访问代码都可以进行逆向工程。我只是希望它需要合理程度的努力——理想情况下是编译 C 级别的东西。)

要了解反编译 Java 类 和 JAR 有多么容易,请参阅 this decompiler。如果您需要公开或实施 public API,您可以混淆的内容将受到限制。

只要人们可以访问您的 java 二进制文件,就很难防止逆向工程。您可以尝试使用一种 JVM 脚本引擎(rhino,...)来实现您的算法并保护该脚本,但是您将受到某人堆转储您的 运行 算法的摆布。