好的做法:如何处理android/java中的密钥库密码?

evi*_*ead 8 java security android keystore password-protection

假设密钥库的密码不是由用户密码提供或绑定到用户密码(或多或少意味着它只是某个代码中的字符串或数组[]),它是否足够保护它不能或几乎不能被提取出字节码?

我知道密钥库的密码(JKS/BKS)仅用于验证密钥库的完整性.此外,我必须假设应用程序在一个或多或少受信任的环境中运行才能"安全".但无论如何,是否可以从apk文件中提取密码?

在应用程序的源代码中对任何密码进行硬编码只是感觉不对,所以也许有一些想法,如何使它实际上不那么具有威胁性.例如,最好是在外部配置文件中配置密码,还是在安装应用程序时随机生成密码(然后应该在哪里存储)?

Com*_*are 4

它是否是一种足够的保护,以至于它不能或只能很难从字节码中提取出来?

“足够”是一个主观术语;只有你自己才能决定什么对你来说足够了。

是否可以仅从 apk 文件中提取密码?

是的,因为 APK 文件可以被反编译,未加密的网络对话可以被嗅探等等。

如何让它实际上不那么具有威胁性

您可以购买 DexGuard 许可证并使用它,因为这将加密硬编码字符串(例如您的密码)。是否值得额外的防御是你的决定。

在外部配置文件中配置密码会更好吗

任何获得设备 root 权限的人都可以获取该文件。

或者在应用程序安装过程中随机生成它(然后应该将其存储在哪里)?

它将至少存储在 root 设备用户可以使用的位置。