当你将 .java 文件编译成 .class 文件时,如果你有这样一行
String s = "This is a String"
如果您在文本编辑器中打开 .class 文件,您将看到
This is a String
在文件中的某处,在 gobblety gook 中。
这对大多数东西来说都很好,但在处理像 API key 这样的敏感信息时就不行了。
当然,一种替代方法是从另一个文件中读取 API key ,但这只会让查找 key 变得更加容易,因为现在人们在打开 .jar 文件时只需打开“key.txt”即可。
那么如何加密 .class 文件中的字符串文字呢?
最佳答案
当您将代码发送给第 3 方时,您将失去对它的所有控制。即使您在何处将 API key 作为加密字符串嵌入,攻击者仍然可以尝试并可能成功破解它,这将使您所有的加密/解密工作都白费。
在我看来,最好的解决方案是不在应用程序中提供任何敏感信息,而是为其提供某种 ID。然后通过使用安全连接提取它需要的任何敏感值。
关于java - 您如何防止人们在已编译的类文件中看到字符串文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29672114/