好的,所以我正在为我的Android应用程序规划自动构建。这意味着我需要将任何配置信息(如API密钥和端点)放入.properties文件中。问题是我不能只将API密钥弹出到该文件中。
我知道通常的建议是尝试在应用程序中隐藏敏感数据,然后在运行时生成它。
我的计划是加密敏感的.properties数据并在代码中生成它的accesskey。
我可以将加密密钥存储在Java密钥库中,然后在运行时在代码中派生密码。
这意味着我可以在构建测试/生产环境时轻松地轻松交换加密密钥和api密钥。我也可以从源代码管理中排除。
你们怎么看待这种方法?感谢。
答案 0 :(得分:0)
除了将密钥存储在密钥库中之外,您的计划对我来说听起来不错。基本上,只为设备上的所有系统级和第三方应用程序创建了一个密钥库实例。在Android 4.0之后,密钥库与解锁屏幕集成,并在用户解锁设备时解锁。因此,如果您将密钥存储为密钥库中的密钥/值对,则在打开应用程序之前,密钥已准备就绪。或者,如果将其存储为密钥/加密(值)对,则必须在运行时从密码派生密钥并解密加密值。但您可能最终有两个密码用于解锁手机屏幕和解锁密钥。我可能只使用一个密码,即屏幕解锁密码。由于密钥库映射到进程ID,因此只能从您的应用程序访问它。但是,如果您打算处理每个电话的多用户,那么后一种方法可能是相关的。