Android 上是否有与 iOS 的 Keychain 等效的功能?
我对Preferences API的理解是它没有加密。对于我的应用程序,这些凭据是否跨设备持久存在并不重要(即与Android 中类似 iPhone 的钥匙串不同的用例?)
我还查看了KeyStore API,但它似乎将用户凭据的实际存储留给了应用程序开发人员。
Android 上是否有与 iOS 的 Keychain 等效的功能?
我对Preferences API的理解是它没有加密。对于我的应用程序,这些凭据是否跨设备持久存在并不重要(即与Android 中类似 iPhone 的钥匙串不同的用例?)
我还查看了KeyStore API,但它似乎将用户凭据的实际存储留给了应用程序开发人员。
简短的回答,没有。但是您可以期望文件系统是安全的。
每个应用程序在不同的用户下运行,用于存储应用程序数据的文件系统由普通 UNIX 用户权限保护。因此默认情况下,每个应用程序的文件访问都是沙盒。文件系统也可以被加密。
开发者网站的这个页面解释得更好:http: //developer.android.com/guide/topics/security/security.html
其实有:
通过将 Smart Lock for Passwords 集成到您的 Android 应用程序中,您可以使用用户保存的凭据自动登录您的应用程序。用户可以保存用户名密码凭证和联合身份提供者凭证。
使用凭据 API 将 Smart Lock for Passwords 集成到您的应用程序中,以便在登录时检索保存的凭据。使用成功检索的凭据让用户登录,或使用 Credentials API 通过部分完成应用程序的登录或注册表单来快速加入新用户。在登录或注册后提示用户存储其凭据以供将来自动验证。
https://developers.google.com/identity/smartlock-passwords/android/
扩展@DJPlayer 的回答:
一些相关的文章。第三个包括一个 github 应用程序,该应用程序演示了使用密钥库提供程序生成密钥然后加密字符串。
另请参阅Android 存储选项以了解存储加密密码的方法 - 我的建议是共享首选项。
请注意,根据具有 root 访问权限的第二篇文章以及您的应用程序如何使用密钥库的一些知识(可以通过反编译您的 apk 获得),有可能劫持私钥并使用它来解密加密材料(例如:持久密码)
http://developer.android.com/reference/android/security/KeyChain.html
Keychain for OS 4.0