How to create encrypted Jar file?
我正在从事必须保护数据(显示代码不是主要问题)文件的项目。我们正在使用Java Netbeans。是否有任何设施可以以加密格式创建jar?我们还在数据库中使用sqlite-因此,将文本文件以加密格式放置对我们来说也是不合适的选择。
无法创建加密的JAR,因为正在执行的JavaVM必须以某种方式能够读取其要执行的数据。
与VM类似,只要拥有适当的工具和专门知识的任何人都可以从JAR中提取所有数据。
如果可以对JAR进行加密,则还必须向要执行JAR的客户端提供一些解密密钥或工具,这完全使加密的目的无效。
您能获得的最好的东西是迷惑,但这对雄心勃勃的攻击者而言并不是真正的安全性或障碍。
我同意Kosi2801。类文件加密只是安全性的模仿(请参见http://www.excelsior-usa.com/articles/java-obfuscators.html)
使用自定义ClassLoader可能会破坏应用程序,例如在应用程序服务器中。
有更好的方法:在类文件中使用String常量的加密。大多数商用混淆器都具有此功能,例如Allatori,Stringer Java混淆工具包,Zelix KlassMaster,Smokescreen和DashO(超级昂贵)。 Stringer Java Obfuscator具有调用上下文检查和完整性控制功能,这使得保护真的很难被破解。
最安全的方法是在JavaCard等外部设备上存储和执行部分字节码。
我是Licel LLC的首席执行官。 Stringer Java Obfuscator的开发人员。
Kosi2801即将推出。我能想到的唯一可以做的是以下操作,但这很丑。
这将允许您加载类。您可以做同样的事情(无需类加载器)来加载其他资源。
实施起来很有趣(对于那些喜欢挑战的人),但与此同时存在一些问题:
因此,您可以给人们一些麻烦,使事情变得更艰辛,但是在这种情况下,您已经拥有了所能做的一切,那就是尝试让其他人不必花时间进行投资。
软件保护非常困难,尤其是在Java之类的东西中,它很容易反编译并且不能像C / Assembly那样更改自己的代码。有一个原因是,其中一些最昂贵的软件需要硬件加密狗,或者被锁定到某个CPU或其他硬件。
通常,如果您希望应用程序及其数据是自包含的,则无法以安全的方式执行此操作。但是,您当然可以加密文件并使用埋在代码中的密钥对它们进行解密。一个坚定的黑客可以得到它,但是如果那不是您所担心的,那就好了。如果这样做,请记住,加密的数据无法压缩,因此请先压缩,然后再加密。
如果您确实需要安全的数据(例如,机密数据),则需要使用密钥对数据进行加密,然后通过一些外部手段将该密钥提供给应用程序,例如将其放在拇指驱动器上并获取通过安全快递将其发送给用户。
另一种可能使数据(或密钥)通过SSL可用,并使用良好的身份验证方法来验证您的用户身份。
通常-任何系统都不可能完全安全,但这也不是必需的。一个系统只需要足够安全就可以阻止您认为将要破解它的攻击者。
另一个选择是制作一个自定义的JVM,该JVM可以动态解密JAR。但是,同样的问题仍然存在:在某些时候,必须将JAR Java类解密才能由JVM运行,然后才能捕获并反编译它们。
更不用说拥有自定义JVM了,那么所有用户也需要下载该JVM。
您可以使用CipherOutputStream和CipherInputStream将Java对象以加密格式序列化到磁盘。可能会打开一个用于保存数据的选项。