如何隐藏android中的翻译API密钥

时间:2015-11-11 08:01:30

标签: java android api google-maps yandex

我在我的应用程序中使用yandex和google translate,当然还有唯一的API密钥,但每个人都可以通过反编译我的应用程序来窃取它。我怎么能隐藏它?

3 个答案:

答案 0 :(得分:1)

如果我是你,我将租用服务器(可能是亚马逊)和创建数据库并使用简单的加密字符串(哈希等)插入我们的api密钥。< / p>

ID - Name - androidKey - key

1 - GoogleAPI - AJKBSASHUA9 - yourAPIKey
2 - YandexAPI - 5A6S5D6A53C - yourAPIKey
.
.
.

然后你可以创建一个由你的android packageName运行的服务;

http://example.com/API/getAPIKey/
?packageName="yourPackageName"
&androidKey="AJKBSASHUA9"

如果你使用 POST 方法,那么对你来说是安全的。

答案 1 :(得分:1)

简单地说,你根本不能在你的APK内部或在应用程序内部这样做。如果有人想要得到它,他们就会得到它。

  • 你要破译它们,我会在应用程序中找到密钥。
  • 您将把它们放入网络并在安装后获取它们,我将根据我的手机获取它们。

为什么你会在第一时间隐藏它们,它们被分配了你的[Release | Debug]密钥库的SHA1指纹和你的包名,没有人可以拥有你的发布密钥库及其密码。

答案 2 :(得分:1)

虽然您可能无法达到150%的安全性,但您可能需要在应用中采取措施来减慢可能的攻击者速度。这将导致他们中的一些人不再利用你的应用程序,只是因为它不值得努力。

OWASP移动安全项目发布了他们的"Top Ten Mobile Risks"集合,其中特别是“破碎密码术”和“缺乏二元保护”主题在您的案例中很有意思。即使这个链接没有为您提供简单的“如何”,我认为它可以帮助您评估您的情况。