CSD*_*gon 8 java string jar string-literals .class-file
当您将.java文件编译为.class文件时,如果您有一行代码
String s = "This is a String"
Run Code Online (Sandbox Code Playgroud)
如果在文本编辑器中打开.class文件,您将看到
This is a String
Run Code Online (Sandbox Code Playgroud)
在文件中的某个地方.
对于大多数东西来说,这很好用,但在处理API密钥等敏感信息时却不行.
当然,一种替代方法是从另一个文件读取API密钥,但这使得查找密钥变得更加容易,因为现在该人可以在打开.jar文件时打开"key.txt".
那么如何加密.class文件中的字符串文字?
当您向第三方发送代码时,您将失去对它的所有控制权.即使您将API密钥作为加密字符串嵌入到何处,攻击者仍然可以尝试,并可能成功破解它,这将使您的所有加密/解密工作都徒劳无功.
在我看来,最好的解决方案是不在应用程序中提供任何敏感信息,而是为其提供某种ID.然后,通过使用安全连接来拉动它所需的任何敏感值.
即使您在类中将该信息加密,黑客也只能从您的代码中找到解密该信息的机制。因此,恕我直言,最好将加密信息保存在其他文件中,然后读取该文件。另外,使用操作系统安全机制限制对该文件的访问。