问题标签 [sqlcipher-android]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
612 浏览

android - android 发布版本中的 SQLCipher 加密错误。

我正在尝试使用 SQLCipher 加密数据库。我关注了http://lomza.totem-soft.com/tutorial-add-sqlcipher-to-your-android-app/并且它工作正常,应用程序处于调试模式。但是每当我尝试构建发布版本时,它就会崩溃。我什至尝试了每个可能的站点中提到的 proguard 规则。

这是我的节目

这是 logcat :

我在用compile 'net.zetetic:android-database-sqlcipher:3.5.7@aar'

0 投票
2 回答
597 浏览

android - 由于 sqlcipher 库和 NDK 限制,Android 7.0 Native 崩溃

我在 Android 7.0 Samsung S8 和许多其他此类本机崩溃上收到以下崩溃:

此崩溃已登录 Play 商店。对于我们在 Play 商店中提供的每个构建更新,它都会不断重复。

下面的库在我的应用程序中使用,它是唯一使用来自 NDK 的 jni 代码的库。

Github 的 SQLCipher 库

来自 Github 的 Greendao 库

Android 7.0 上的 NDK 限制

请帮助解决此崩溃问题。我的应用程序每天都在增加。见下图:

Play 商店崩溃

Github问题链接

0 投票
1 回答
282 浏览

sqlite - 平滑迁移到加密数据库 (SQLChiper)

到目前为止,我一直在我的应用程序中使用未加密的数据库,现在我想使用 SQLCipher 将我的数据库迁移到加密数据库。这是我的情况。

对于下一个版本,我将更新数据库版本并执行脚本。要调用 onUpgrade(),我必须调用 geReadableDatabase() 或 getWriteableDatabase()。因此,当我调用任何 operation() 时,它将执行我的脚本并执行以下操作。

  1. 创建和加密数据库。

  2. 将数据从旧(未加密)数据库导出到加密数据库。

  3. 删除旧数据库。

因此,当我执行迁移时,我希望暂停所有其他操作,直到迁移完成,然后将在加密数据库上执行暂停的操作。

不太确定如何实现这一目标,所以我应该使用什么方法来实现这一目标。

0 投票
2 回答
2023 浏览

android - 如何在 Android 中保护我的加密密钥?

我已SQLCipher在我的 Android 应用程序中实现以使其数据库安全。SQLCipher需要一个密钥来加密数据库文件。我面临的问题是密钥保护,如果我的应用程序在有根设备上使用或被反向工程,那么我的密钥将被暴露并且数据库可以被解密。

请注意,我的应用程序不会在每次用户打开它时都要求输入密码,因此用户输入的密码不能用作密钥。我想实现像 facebook、whatsapp 应用程序这样的行为,它使用私钥/密钥加密数据而不询问任何密码,并使用户始终保持登录状态。这些应用程序在哪里以及如何存储它们的密钥?

请提出一个可以保护密钥的解决方案/算法。此外,Android OS 是否提供任何此类数据保护/管理功能?

0 投票
2 回答
245 浏览

android - 将 android.database.sqlite.SQLiteOpenHelper 更改为 net.sqlcipher.database.SQLiteOpenHelper 后未调用 onUpgrade 和 onCreate

为了开始在我正在开发的应用程序中使用 SQLCipher Community Edition,我一直在关注官方文档。所以,我做了一个适当的 gradle 导入如下:

我添加了

在 MainApplication.java 中。由于我的应用程序已经发布,我还在我的 SQLiteOpenHelper 类实例的 onUpgrade() 方法中放置了一些迁移代码。不幸的是,虽然我升级了数据库版本号,但我还是调用了: getInstance().getReadableDatabase("testKey"); onUpgrade() 和 onCreate() 方法都不会被调用。我错过了配置中的某些内容吗?

0 投票
2 回答
568 浏览

android - 从android上的sqlcipher数据库返回数据并放入textview

sqlcipher 入门页面工作,我无法显示数据库中的数据并在 textview 中查看

我已经初始化了数据库并在点击事件中查询了数据库,但它在原始查询事件中崩溃了。

任何人都可以帮助我,因为我一直在尝试遵循sql-lite 的示例,但它们似乎不适用于密码。

0 投票
2 回答
1415 浏览

android - 使用带有 sqlcipher 的密钥

我正在使用 sqlcipher 存储来自我的应用程序的数据,首先我遇到了麻烦,生成一个密钥,然后存储在密钥库中。

顺便说一句,需要没有像android 文档中描述的用户交互

这是我试图生成秘密的方式,

在这里,是我设置 sqldatabase 的地方

那么问题来了,我如何在密码字符串中使用秘密?目前,我只能以字节数组的形式获取秘密。

0 投票
2 回答
214 浏览

android - Android 和 SQLite 保护

我有一个带有 100k+ 行的 SQLite 数据库的 android 应用程序,从 assets 文件夹中的 *.db 文件填充。

我想让数据库更难从设备中提取出来。

首先,有人拉数据库的方法是什么?

  • 他可以获取 APK 并从 assets 文件夹中提取 *.db 文件

  • 应用启动后,可以查询设备的sqlite服务器

那么,让数据库更难拉取的方法是什么:

  • 加密资产文件夹中的 *.db 文件

  • 适用于 Android 的 SQLCipher?无论如何,我不希望用户输入密码,我(客户端)只是想让 SQLite 更难被提取,比如将密码存储在代码中并使用 proguard 使其难以找到

问候

0 投票
3 回答
6425 浏览

android-sqlite - net.sqlcipher.database.SQLiteException: 文件不是数据库: , 编译时: select count(*) from sqlite_master

错误这一行:

打开数据库时。但怎么了?如何用密码打开数据库?谁能帮我?

  1. 我在 SQLITE Db Browser > File> Set encryption 上设置密码
  2. 在android部分打开这个密码
  3. 打开时显示错误
  4. error : net.sqlcipher.database.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master

任何人都可以帮我解决它吗?提前致谢

0 投票
2 回答
1391 浏览

android - 无法解析 Android Studio 中 net.sqlcipher 导入中的符号“数据库”

任何想法为什么我有这个无法解析符号“数据库”在net.sqlcipher. 我只是从 GitHub 克隆了 SQLCipher Android Test并想进行测试。

还附上了截图供参考。 在此处输入图像描述

谢谢...