【问题标题】:Is there any reliable way to encrypt Shared preference in Android (Min Api 19)是否有任何可靠的方法来加密 Android 中的共享偏好(Min Api 19)
【发布时间】:2020-04-27 19:13:18
【问题描述】:

我发现了一个类似的问题 here 和许多其他关于保护共享偏好的文章 但它们都带有一个警告-

如果更改锁屏方法或 PIN/模式,您在代码中用作密码或“秘密”的证书将被删除。

这是library 建议使用的人,但它有很多未解决的问题,例如如果更新到 Android Q 他们无法访问数据。

只有在 Min API 为 23 (6.0+) 时才能使用 EncryptedSharedPreferences。

有人可以建议他们是否找到任何可靠的方法来实现加密共享首选项?

【问题讨论】:

  • 你可以有一个内部加密/解密逻辑。当您将值保存到共享首选项时,请在保存之前对其进行加密,而在检索值时在使用它之前对其进行解密。您可以编写一个独立的模块来处理这个问题。所有与共享首选项相关的操作都应通过该模块进行路由。
  • 但加密逻辑并不安全,任何人都可以对我的 apk 进行反向编码,然后对这些密钥进行解码。
  • @Ankit 你找到解决方案了吗?如果是,请发布。
  • @kousalya 我根据设备版本(21+ ESP 和低于该 SP)在 SharedPreferences 上同时使用 EncryptedSharedPreferences。也不加密旧版本的数据,因为这太慢了。

标签: android encryption sharedpreferences


【解决方案1】:

新版本的 EncryptedSharedPreferences (https://developer.android.com/reference/kotlin/androidx/security/crypto/EncryptedSharedPreferences.html) 已经发布,支持 API Level 21+!因此,如果您使用的是 1.1.0-alpha01 及更高版本,则可以使用 minSdk 版本 21。

所以这就是你必须给你的build.gradle(app):androidx.security:security-crypto:1.1.0-alpha01

打字时间,有更新的版本,你可以在这里https://developer.android.com/jetpack/androidx/releases/security?authuser=1了解更多。

【讨论】:

    【解决方案2】:

    【讨论】:

    【解决方案3】:

    对于首选项加密,您可以使用 EncryptedSharedPreferences,但它提供 API 级别 21(棉花糖)的支持。

    API 级别低于 21 时,您需要使用 AES 加密来加密您的偏好数据。 参考以下链接 https://github.com/Naibeck/Android-Security

    【讨论】:

      猜你喜欢
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 2017-05-17
      • 2019-06-20
      • 2017-09-27
      相关资源
      最近更新 更多