我在一个项目中工作,我们需要加密.jar文件,这样就没有人可以访问jar文件中的.class文件了……有没有可以帮助我加密.jar文件的java编码?
发布于 2011-08-25 17:25:19
即使您加密了jar文件,也必须在JVM能够运行它之前对其进行解密,因此您还需要另一个jar文件,其中包含解密并加载到JVM中的类。
由于第二个jar文件本身不能加密,所以想要查看您的类文件的恶意用户可以简单地查看第二个jar文件中的类,然后解密您的超级机密jar文件并访问它。
也许你可以使用一个混淆器来提高代码的安全性,但它最终会保护你的类文件不被反编译(变得更难,但不是不可能),而不是被使用。
如果模糊处理还不够,你可以考虑把你的jar文件编译成windows的DLL或者unix/linux的SO,这会使反编译变得更加困难,但这并不总是能够正确地完成,而且这通常是一个PITA。GCJ能够以某种方式做到这一点,而且还有其他商业产品可以直接将.class/.jar编译成机器码。
但是,请考虑到,您在其中放置了多少安全性并不重要,因为客户端计算机必须能够执行它,它必须能够读取它,所以无论您的代码将公开什么,您只会使它变得更加困难。
如果你真的有一个秘密的算法,你无论如何都不想透露,考虑把它转换成web服务,托管在你的服务器上,这样你就不必把实际的代码发送到客户端机器上,还可以通过检查对应用程序关键部分的访问来更好地防止未经授权的应用程序副本。
发布于 2011-08-25 17:29:48
我假设你知道,任何熟练的java程序员都可以对你使用(或编写)的Java工具进行逆向工程,并且仍然可以解码应用程序的jars?另外,编写读取“加密”代码的自定义类加载器也可以进行反编译,并且可以编写一个工具来绕过它。
即使使用混淆、字节码修改和自定义的类加载器,java也是可破解/反编译的,并且源代码几乎总是可以被带到某种程度上可读的状态。
发布于 2011-08-25 17:45:54
您希望对jar文件进行模糊处理,而不是加密。
在Java语言中实现这一点的一个流行选择是ProGuard。
https://stackoverflow.com/questions/7187883
复制相似问题