在我的应用中,用户使用Web服务登录,Web服务返回授权密钥。在此之后,每个请求用户都使用此密钥完成。
我的问题是如何安全存储此密钥?我一直把它存储在SharedPreferences中,但这对我来说听起来不太安全。
答案 0 :(得分:2)
您使用共享偏好是正确的方法。您应该将Android Keystore System用于任何此类目的,这是首选方法。
Android Keystore系统允许您将加密密钥存储在容器中,以使从设备中提取更加困难。一旦密钥存在于密钥库中,它们就可以用于加密操作,密钥材料仍然是不可导出的。
KeyStoreUsage.java就是一个例子。
答案 1 :(得分:1)
以明文形式存储
使用明文意味着假设黑客对手机具有物理访问权限,则无法保护用户的运行时数据。
使用对称密钥加密存储
开发人员是一群很有帮助的人,他们经常把加密密钥放在容易找到的地方,比如com.packagename.android.util.security。 使用
<强> Android Keystore 强>
Android Keystore系统允许您将加密密钥存储在容器中,以使从设备中提取更加困难。
使用非对称密钥加密存储
更安全的非对称加密选项是远程存储私钥。
有关详细信息,请参阅this article