在密钥库中存储 API 个密钥

Store API Key within Keystore

我继承了一个应用程序,该应用程序调用受 API 密钥保护的服务,不幸的是,该密钥嵌入在该应用程序中。显然,这并不理想,因此我希望将 API 密钥嵌入到 Android 密钥库中。我过去曾在其他 Android 应用程序上使用过 https://github.com/scottyab/secure-preferences 等库,但在这种情况下,安全性无法通过安全审计。

阅读此文:https://medium.com/@ericfu/securely-storing-secrets-in-an-android-application-501f030ae5a3 除了如何在密钥库中获取 API 密钥之外,我得到了最初作为构建的一部分的所有内容。理想情况下,我会将 API 密钥作为登录过程的一部分返回,以便在运行时插入它,但不幸的是,此时我无法更改登录服务。

我已经阅读了很多帖子,例如:Best practice for storing and protecting private API keys in applications 但大多数都专注于将您的密钥排除在源代码存储库之外。

所以,问题是:是否有 gradle 构建机制(或任何机制)可以在构建时将特定数据片段插入 Android 密钥库?

Is there a gradle build mechanism (or any mechanism) that can insert a specific piece of data into the Android Keystore at build time?

根据定义,这是不可能的。 AndroidKeyStore 在用户的 Android 设备上,而不是在开发者机器上。在构建时,您的应用程序不在用户的 Android 设备上,因此无法对其执行任何操作。