如何在保持兼容性的情况下使用Android密钥库进行加密/解密?

如何在保持兼容性的情况下使用Android密钥库进行加密/解密?,android,encryption,keystore,Android,Encryption,Keystore,我正在开发一个Android应用程序 出于安全考虑,我应该加密/解密私有数据 到目前为止,我只是将它们作为纯文本存储到SharedReference中 因为web上有很多示例代码,所以应用Android密钥库并不困难 现在我有了加密、解密的方法 问题是 许多用户数据已经以纯文本形式存储到SharedReference中 因为我的应用程序将尝试解密纯文本,如果我更新此应用程序,他们将面临崩溃或错误行为 然后 如何保持兼容性 事实上,当我更新我的应用程序时,我遇到了非法BlockSizeExcept

我正在开发一个Android应用程序

出于安全考虑,我应该加密/解密私有数据

到目前为止,我只是将它们作为纯文本存储到SharedReference中

因为web上有很多示例代码,所以应用Android密钥库并不困难

现在我有了加密、解密的方法

问题是

许多用户数据已经以纯文本形式存储到SharedReference中

因为我的应用程序将尝试解密纯文本,如果我更新此应用程序,他们将面临崩溃或错误行为

然后

如何保持兼容性

事实上,当我更新我的应用程序时,我遇到了非法BlockSizeException

因此,我认为如果我在decrypt方法上捕获非法BlockSizeException并只返回纯文本,我的应用程序将运行良好

但我不知道这是对还是错

你能告诉我一些建议吗

您增加了新版本的版本,对吗?为什么不在代码中添加if-else逻辑来决定是否根据应用程序版本进行加密/解密? 您可以创建新的存储路径/SharedReference名称并实现en/解密逻辑。然后旧的SharedReference数据将被忽略。Idk了解您的业务逻辑的风险。
是的,2号看起来更好!谢谢您: