如何对纯文本数据进行混淆,以便Java程序能够对其进行反混淆处理很难进行反向工程?也就是说,应该没有简单的方法通过反编译/分解程序的JVM代码来弄清楚如何自己解密数据。以非反向工程方式加密Java程序的数据
我意识到如果一个坏人足够坚决,这是不可能的。只是想尽可能地努力。
我唯一的想法是一个原生的扩展实现加密算法与存储在一个古怪的方式,而不仅仅是一个简单的字符串的密钥。但真的喜欢避免本地扩展。
编辑
我极力用下来,并密切票反对。这是一个真正的问题。该应用程序被派遣给数千名高中的孩子。为了加密数据,它目前使用代码中嵌入的密钥来实现RC4加密(使用Java)。聪明的孩子们可以反编译这个,并使用反编译来编写读取其他孩子数据文件的Java。这反过来允许各种形式的作弊。我们需要一个简单而便宜的方法来更难推断加扰算法。就这样。我们不关心逆向工程这个80k线应用程序的其余部分。实际上它是开源的。我们只需要保护执行数据解密的单一功能。
加密数据,并让您的应用程序解密它。我不相信你*需要*本地扩展,但你可能想看看JCE Unlimited Strength JAR。 – Makoto 2014-09-30 01:36:13
一个非常昂贵的选择是Excelsior JET,它将本质上将Java字节码编译成本机可执行文件(这使得它很难像C++应用程序那样进行反向工程)。 – xpa1492 2014-09-30 01:56:25
这是尖叫的XY问题。你试图让不同用户的信息彼此保密?使用非对称加密。 – chrylis 2014-09-30 03:05:24