Android 中的 SharedPreferences 加密

Encryption of SharedPreferences in Android

与仅存储 SharedPreferences 项目相比,存储加密的 SharedPreferences 项目有什么附加价值。

我只认为加密是一种缓解技术,这样用户就无法轻易操纵 XML 文件。

问题:加密还是明文 SharedPreferences 存储?

加密的有用性取决于加密密钥的来源。

如果加密密钥来自用户(例如,从用户输入的密码派生),那么该值是任何试图读取 SharedPreferences XML 中的数据的人都会需要该密码或满足于尝试暴力解密。

如果加密密钥不是来自用户,则该值会降低。攻击者(包括用户)可以尝试找到密钥并找到加密算法。两者都必须存在于设备上,否则应用程序无法解密数据(更不用说加密了)。在大多数简单的情况下,比如密钥作为常量被烘焙到应用程序中,专家不需要花费大量的工作就可以找到密钥,找到算法,并能够解密数据。