java - 您如何防止人们在已编译的类文件中看到字符串文字?

标签 java string jar string-literals .class-file

当你将 .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/

相关文章:

java - 从 Java 运行进程并观察其内存消耗

多个分隔符的代码核算不起作用

scala - 将 Logback 中的应用程序日志与 log4j 中的 Spark 日志分开

java - 如何使用eclipse创建jar文件

java - 从java应用程序外部传递过来的String会保存在String池中吗?

android - 是否可以在不使用 JNI 的情况下在 Android 应用程序开发中实现 DLL 概念?

c# - 声明连接变量

java - 如何通过调用方法更新 JFrame 内容 Pane ?

java - 使用改造后请求正文中的原始字符串

c++ - 无符号字符的字符串