如何对纯文本数据进行模糊处理,以便能够对其进行反模糊处理的Java程序难以进行反向工程?也就是说,应该没有简单的方法来弄清楚如何通过反编译/反汇编程序的JVM代码来自行解扰数据。
我意识到,如果一个坏人足够坚定,这是不可能的。只是想尽可能地努力。
我唯一的想法是实现加密算法的本机扩展,密钥以奇怪的方式存储,而不仅仅是一个简单的字符串。但真的希望避免原生扩展。
修改
我强烈不同意下来和结束投票。这是一个真正的问题。该应用程序适用于数千名高中生。为了加扰数据,它目前使用代码中嵌入的密钥实现RC4加密(在Java中)。聪明的孩子能够反编译并使用反编译来编写读取其他孩子的数据文件的Java。这反过来允许各种形式的作弊。我们需要一种简单,廉价的方法来推断加扰算法。就这样。我们不关心逆向工程这个80k线应用程序的其余部分。实际上它是开源的。我们只需要保护进行数据解扰的单一功能。
答案 0 :(得分:0)
程序可以解码的任何东西,程序都可以解码。任何Java程序都可以反编译。即使远程存储数据也无法工作,因为数据下载后您正在对其进行解密,并且可以复制或修补。如果明文暴露,可以访问它。你可以很难访问,但用许多年前黑客的话来说:“嘿,太棒了,它是受版权保护的 - 这意味着它带有一个免费的拼图!”
请记住,密码存储通常使用陷阱门密码并比较加密的散列值是有原因的。甚至这需要将加密密码保存在用户绝对无法访问的位置。
退一步重新考虑您的设计。