【问题标题】:How to encrypt shipped database in android?如何在android中加密发送的数据库?
【发布时间】:2013-01-17 09:44:03
【问题描述】:

团队,

我有一个带有大型 SQLite 数据库的 Android 应用程序,这些数据花费了我很多钱,我不想让任何人轻易拥有它。 这个数据库以 databse.sqlite 文件的形式提供给我,我将其放入 APK 资产中。

有没有办法在发货前加密这个数据库,然后在读取数据时解密?

P.S 我搜索了很多,我的所有结果都指向我使用 sqlcipher,但是这个库不适用于附带的 SQLite 数据库文件。

【问题讨论】:

  • 黑客将花费 15 分钟来解密它。如果您的数据非常有价值,请将其保存在服务器上。

标签: android database sqlite encryption


【解决方案1】:

问题在于,您需要将密钥(或密钥的位置)存储在代码中的某个位置,而对应用程序进行解译并不需要花费太多精力。不幸的是,您无法真正阻止任何人访问数据。你只能让它变得更难,但对于真正有决心的人来说,这仍然很容易。

最好的解决方案是将数据库存储在服务器上,只将用户实际需要的数据发送到设备。这样,您至少可以控制设备请求的数据。

【讨论】:

  • 我仍然需要将数据存储在设备上以供离线查看!
  • 出厂数据库也有问题!它在 APK 中!
  • 这实际上是您的数据还是从第三方购买的数据库?如果它是您的数据,也许您可​​以将其打包成更适合您需求的某种形式。如果它来自第三方,你为什么关心他们是否访问它?你不会因此受到任何伤害。
  • 它是我的数据.. 我花了一些时间和金钱来收集这些数据。
  • 首先想到的实际上是最复杂的一个。我有一个类似的案例,我们使用了一个高度定制的开源 c++ 数据库系统,它没有像 SQLite 这样的广泛支持。这样,任何想要获取数据的人都需要先编写自己的阅读器。这将使破解数据库变得非常乏味,但仍然不是不可能的。我仍然会使用基于服务器的方法,如果没有连接就让应用程序失败。根据我的经验,大多数用户都认为他们的手机在没有数据连接的情况下没有一半的用处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 2011-01-13
  • 2018-01-06
  • 2011-10-07
  • 1970-01-01
相关资源
最近更新 更多