0

我正在编写一个小型 Android 应用程序,我需要隐藏一些变量值。我从内容提供商那里获得了一个 API 密钥,内容提供商为我提供内容以在我的应用程序中显示我需要从中检索数据。因为它被用于加密算法,所以代码不泄露至关重要。

我需要将 API 密钥保存在我的代码中,并确保它不会被世界上的坏人检索到。我现在要做的是将它们作为变量保存在我的代码中:

private static final String API_KEY="mysupersecreatapikey";

在应用程序编译为 APK 文件后,在我看来,这不再是可检索的了。我现在是否以正确的方式进行操作,还是有更好的解决方案?

提前谢谢,达里尔

4

2 回答 2

1

您可以将 API 密钥存储在 storage 中的文件中。您可以在将 API 密钥写入文件时对其进行加密,然后在读取它时对其进行解密(在程序执行时)

于 2013-08-31T19:45:36.973 回答
1

如果您以客户端可以使用的任何形式将 API 密钥放入客户端,则可能以某种方式获取它。也许通过解包 APK 并反编译代码,也许通过流量嗅探。例如,该私有静态最终变量很可能由反编译器提取(如果它是字节码)。

如果您想真正确保您的用户都无法获得 API 密钥,那么您的应用程序不应该直接使用它。而是让它连接到您设置的提供会话 ID 的 Web 服务。在您可以控制的服务器上运行的 Web 服务(很多选项)将是唯一知道 API 密钥的软件。

但是根据用例的不同,这可能是解决这个问题的一个完全矫枉过正的解决方案。

于 2013-08-31T20:05:21.030 回答