我是一名初级的Java程序员。我正在开发一个解密一些数据的应用程序。
这个解密密钥是硬编码进软件中的,因此可以通过分析字节码来查看。
我知道无法完全防止反向工程,所以我试图使这个过程尽可能地困难。
我的想法不是直接将密钥放入我的代码中,而是让它经过某种转换。
例如,我可以写 -
这个解密密钥是硬编码进软件中的,因此可以通过分析字节码来查看。
我知道无法完全防止反向工程,所以我试图使这个过程尽可能地困难。
我的想法不是直接将密钥放入我的代码中,而是让它经过某种转换。
例如,我可以写 -
private static final byte[] HC256A = Hex
.decode("8589075b0df3f6d82fc0c5425179b6a6"
+ "3465f053f2891f808b24744e18480b72"
+ "ec2792cdbf4dcfeb7769bf8dfa14aee4"
+ "7b4c50e8eaf3a9c8f506016c81697e32");
这样,查看字节码的人就无法直接阅读它。但是必须按照逻辑进行转换,这在字节级别上并不容易。
那么你们认为这有用吗?除了十六进制解码之外,最好的转换是什么?是否有其他可用于保护硬编码解密密钥的方法?
感谢您所有的建议。