如何在 android 中隐藏翻译 API 键

How to hide translator API key in android

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

如果我是你,我会租用服务器(也许是亚马逊)并创建数据库并插入我们的api带有简单加密字符串(哈希等)的密钥。

ID - Name - androidKey - key

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

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

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

如果您使用 POST 方法,它对您来说是安全的。

简单地说,您根本无法在 APK 内或应用程序内执行此操作。有人想得到就得到。

  • 你来破译它们,我会在应用程序中找到密钥。
  • 你要把它们放在网上并在安装后获取它们,我会根 phone 并获取它们。

为什么你首先要隐藏它们,它们被分配了你的 [Release|Debug] 密钥库的 SHA1 指纹和你的包名称,没有人可以知道你的发布密钥库及其密码。

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

OWASP 移动安全项目已发布了他们的 "Top Ten Mobile Risks" 合集,其中主题 "Broken Cryptography" 和 "Lack Of Binary Protections" 在您的案例中尤为有趣。虽然即使这个 link 也没有为您提供一个简单的 "how to",但我认为它可以帮助您评估您的情况。