我有一个难题。基本上,我为一群我是朋友的人提供了一个程序,该程序使用了我不希望组外任何人知道的源代码。我们都知道 Java 在进行任何级别的混淆时都非常糟糕,因为大多数混淆工具只能重命名对象、扰码等。我使用过这样的工具,但老实说,我想尽可能地使用程序的安全性。
由于应用程序需要用户名、密码和其他标识符才能登录到它使用的服务器,我开始怀疑是否可以为用户生成唯一的 AES 密钥来保护 JAR。
基本上,在运行各种启动器登录时,启动器应用程序可能会从服务器请求一个 AES 密钥,并使用它来解密它已经从服务器下载的安全 JAR。密钥对于每个用户来说都是完全唯一的,这意味着服务器必须为每个用户以不同的方式加密 JAR。
现在,我知道这听起来有多疯狂。但由于这是一件低级的事情,我需要知道是否有一种方法可以解密并从任何类型的流中运行 JAR。或者,如果这不可能,解密文件、运行它然后重新加密它是否合理?