如何 encrypt/decrypt 使用 Android KeyStore 并保持兼容性?
How to encrypt/decrypt using the Android KeyStore with keeping compatibility?
我正在开发一个 Android 应用程序。
为了安全起见,我应该encrypt/decrypt私有数据。
直到现在,我只是将它们作为纯文本存储到 SharedPreference 中。
因为网上有很多示例代码,所以应用AndroidKeyStore并不难。
现在我有 "encrypt"、"decrypt" 个方法。
问题是...
许多用户的数据已经作为纯文本存储在 SharedPreference 中。
因为我的应用程序会尝试解密纯文本,如果我更新此应用程序,他们将面临崩溃或错误行为。
然后...
如何保持兼容性?
实际上,当我更新我的应用程序时,我遇到了 IllegalBlockSizeException。
所以我认为如果我在 "decrypt" 方法上捕获 IllegalBlockSizeException 并且 return 只是纯文本,我的应用程序将正常运行。
但是不知道对不对...
你能告诉我一些建议吗?
- 你的新版本增加版本对吗?为什么不在您的代码中添加一个
if else
逻辑,以根据您的应用程序版本决定是否 en/decrypt?
- 您可以创建新的
storage path/SharedPreference name
并实施您的 en/decrypt 逻辑。然后您的旧 SharedPreference 数据将被忽略。了解您的业务逻辑的风险。
我正在开发一个 Android 应用程序。
为了安全起见,我应该encrypt/decrypt私有数据。
直到现在,我只是将它们作为纯文本存储到 SharedPreference 中。
因为网上有很多示例代码,所以应用AndroidKeyStore并不难。
现在我有 "encrypt"、"decrypt" 个方法。
问题是...
许多用户的数据已经作为纯文本存储在 SharedPreference 中。
因为我的应用程序会尝试解密纯文本,如果我更新此应用程序,他们将面临崩溃或错误行为。
然后...
如何保持兼容性?
实际上,当我更新我的应用程序时,我遇到了 IllegalBlockSizeException。
所以我认为如果我在 "decrypt" 方法上捕获 IllegalBlockSizeException 并且 return 只是纯文本,我的应用程序将正常运行。
但是不知道对不对...
你能告诉我一些建议吗?
- 你的新版本增加版本对吗?为什么不在您的代码中添加一个
if else
逻辑,以根据您的应用程序版本决定是否 en/decrypt? - 您可以创建新的
storage path/SharedPreference name
并实施您的 en/decrypt 逻辑。然后您的旧 SharedPreference 数据将被忽略。了解您的业务逻辑的风险。