我想在 Android 设备上加密保存一些敏感数据(例如,Windows 网络 ID/密码)。我不是试图保护用户的数据;我正在尝试代表用户保护数据。只要用户没有登录,我希望数据保持加密状态,这样如果坏人可以访问物理存储并尝试绕过操作系统的身份验证读取数据。
在 Windows 和 .NET 上,可以使用“ System.Security.Cryptography.ProtectedData ”。数据由 Windows 帐户加密,因此不需要加密密钥。如果加密的数据存储在磁盘上,即使您通过将磁盘连接到另一台计算机或引导到另一个操作系统来绕过操作系统,您也无法解密加密的数据。
我搜索了 Google 和 Stack Overflow,大多数答案都指向客户经理。但我认为 Account Manager 不适合我的情况,因为我不希望这些数据出现在“设置”>“帐户”中,或被任何其他应用程序使用。我可以使用我自己的代码和加密密钥加密数据,然后可以在运行我的应用程序的另一个系统上解密数据(我可以防止这种情况,但它需要额外的想法和工作,并且容易受到逆向工程的影响)。
在这种情况下,最好的选择是什么?如果在 Android 上没有像 ProtectedData 这样方便的东西,是否有任何唯一的密钥可以用于加密?它必须对设备上的该帐户是唯一的,并且不可猜测。