在安卓系统中是否有类似于iOS Keychain的功能?
我的理解是,Preferences API不具备加密功能。对于我的应用程序,这些凭据是否在设备之间持久化并不重要(即与安卓中的iPhone Keychain相比,使用场景不同)。
我还研究了KeyStore API,但它似乎将用户凭据的实际存储留给了应用程序开发人员。
在安卓系统中是否有类似于iOS Keychain的功能?
我的理解是,Preferences API不具备加密功能。对于我的应用程序,这些凭据是否在设备之间持久化并不重要(即与安卓中的iPhone Keychain相比,使用场景不同)。
我还研究了KeyStore API,但它似乎将用户凭据的实际存储留给了应用程序开发人员。
简短回答,没有唯一的方法。但您可以期望文件系统是安全的。
每个应用程序都在不同的用户下运行,并且用于存储应用程序数据的文件系统受普通的UNIX用户权限保护。因此,默认情况下,每个应用程序的文件访问都是沙箱化的。文件系统也可以加密。
来自开发者网站的此页面更好地解释了此问题:http://developer.android.com/guide/topics/security/security.html
以下是对 @DJPlayer 答案的进一步阐述:
一些相关文章。第三篇包括一个 Github 应用程序,演示了如何使用密钥库提供程序生成密钥,然后加密字符串。
此外,查看Android 存储选项以了解存储加密密码的方式 - 我的建议是使用共享首选项。
请注意,根据第二篇文章,如果具有 root 访问权限并且知道应用程序如何使用密钥库(可能可以从反编译 apk 中获得),则可以劫持私钥并将其用于解密加密材料(例如,持久化的密码)。