Android - 隐藏 API clientId 和 clientSecret 的最佳方式

Android - Best way to hide API clientId & clientSecret

我想听听您对隐藏 API 密钥和秘密密钥的最佳方法的意见。

我找到了 2 种方法:

我知道风险 0 不存在,但最安全的解决方案是什么?

提前致谢

NDK 似乎是您最好的选择,虽然它不是 100% 安全的,但确实很难对其进行逆向工程。 gradle 方式似乎一点也不安全。

出于混淆和加密目的,您还可以利用 DexGuard

最好的保护密钥的方法是不要将密钥放在应用程序中,为此,如果您使用的是高度安全的服务器(例如亚马逊服务器),则将您的密钥放在服务器上并在 运行时间。并且还在应用程序和服务器端应用 public/private 加密。

但如果您想继续使用该应用程序,那么使用 "NDK" 或使用 "Proguard" 两者都是应用程序级别的高度安全机制。

如果您使用 oAuth 获取令牌,您可以在服务器上使用客户端 ID 和客户端密码设置服务器。您的应用程序从您的服务器获取 oAuth 令牌。这样您就不必将客户端 ID 或客户端密码放入用户下载和运行的应用程序中。

为了在 Android 应用程序中隐藏密钥,我们开发了一个免费的开源替代品来替代 Dexguard。我们的 hidden-secrets-gradle-plugin 使用 NDK 和 XOR 运算符来混淆密钥以防止逆向工程。

您可以选择提供自定义 encoding/decoding 算法来提高密钥的安全性。

访问插件和所有详细信息:https://github.com/klaxit/hidden-secrets-gradle-plugin