隐藏变量值

问题描述 投票:0回答:2

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

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

private static final String API_KEY="mysupersecreatapikey";

在我看来,应用程序被编译为 APK 文件后,就无法再检索了。我现在的做法正确吗,还是有更好的解决方案?

java android hide
2个回答
1
投票

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


1
投票

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

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

但根据用例,这可能是解决此问题的完全过度的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.