3

我正在构建一个用于托管应用程序的 SDK。此 SDK 包括使用 SQLite 处理 DB。

其中一项要求是将数据库加密,以防止从设备中提取 SQLite 数据库并使用用户私人信息。

我开始使用SQLCipher,但不支持 64 位架构设备,这导致应用程序崩溃。

我检查了其他一些可能性,但所有这些都导致了其他问题,我决定自己尝试处理。

我的问题:

  1. Android是否有一些数据库文件的加密机制?
  2. 我可以在应用程序启动时加密文件,并在应用程序关闭时再次解密吗?我知道在 iOS 中存在某种称为NSFileProtection的可能性
  3. 你知道其他可以处理数据库加密、支持 64 位设备的库吗?
  4. 你知道是否有一个不使用 JNI(javax.crypto)的 Android 解决方案吗?

我很乐意获得任何信息或帮助。

4

2 回答 2

4

不支持 64 位架构设备

SQLCipher 在我使用过的 64 位设备上运行良好。我似乎回忆起一些具有多个 NDK 库/代码的应用程序的一些问题,其中一些具有 64 位库,而另一些则没有,存在问题。我建议您打开单独的 Stack Overflow 问题,或使用其他支持资源(例如,SQLCipher 的支持板),以解决您的困难。

Android是否有一些数据库文件的加密机制?

不。

我可以在应用程序启动时加密文件,并在应用程序关闭时再次解密吗?

不,有几个原因,其中最重要的原因是应用程序不会在 Android 上关闭。

你知道其他可以处理数据库加密、支持 64 位设备的库吗?

不,无论如何,要求异地资源被认为是 Stack Overflow 的题外话。

你知道是否有一个不使用 JNI(javax.crypto) 的 Android 解决方案吗?

这与第一个和第三个问题相同。

于 2016-01-26T18:50:48.290 回答
0

您需要在此处使用最新版本的 android-database- sqlcipher。我正在使用 3.5.4 它解决了“java.lang.UnsatisfiedLinkError: dlopen failed: library "libutils.so" not found”。请在此处查看

于 2017-09-21T10:23:45.090 回答