问题标签 [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 投票
1 回答
387 浏览

android - android应用程序中带有密码的Robolectric问题

嗨,我正在使用 Robolectric 进行测试用例。在模拟与加密相关的测试用例时,我遇到了一些问题。我尝试使用带有 AES 的密码进行加密。它给了我一些错误。我以以下方式尝试过:

它给了我以下错误:

我已经添加JCE了非法大小异常。如果我在设备上运行它并在我的应用程序中正常工作,它就可以工作。只有当我尝试使用 robolectric 时,它才会给我这个错误。需要一些帮助。谢谢你。

0 投票
0 回答
161 浏览

android - 将表从一个数据库移动到另一个

我有两个数据库,一个是 SQLite db_1,另一个是 SQLCipher db_2。我想把一张桌子从db_1移到db_2

由于我在其中一个数据库中使用SQLCipher,因此我不能ATTACH在数据库中复制 Table 及其内容从一个数据库到另一个数据库。

是否可以使用数据库查询或 Android 代码或两者都以某种方式将表db_2移动db_1onUpgrade().

笔记 :

尝试访问ATTACH数据库时出现以下错误

0 投票
1 回答
1234 浏览

android - Android无法使用greendao使用sqlcipher加密数据库

我正在使用greendao ORM。我正在尝试使用 SQLCipher 加密我的数据库。Greendao 自动支持 sqlcipher。所以我写了下面的代码进行加密。

但是,每当我使用此会话执行任何数据库操作时,它都会出错

我的 gradle 依赖项是->

我的proguard规则是

那么如何使用 greendao 和 SQLCipher 加密我的数据库呢?

PS:Database db = helper.getEncryptedWritableDb("mySecretPassword"); 这一行在执行任何数据库操作时都会产生错误。

0 投票
1 回答
261 浏览

java - 使用 proguard 后释放 apk 崩溃

已经尝试了包中的所有技巧,但无法弄清楚缺少什么。调试构建运行良好,但发布构建一旦启动就会失败。

我想,异常 - “引起:java.lang.IllegalStateException:无效的 UTF-16 代码点”是导致崩溃的原因,但是它在调试版本中如何正常工作?这让我很困惑。

是的,我已经解决了这里的大部分问题,但似乎没有一个可以解决我的问题。请求具有专业知识的人在这里提供帮助..

这是来自 adb 的崩溃日志 -

02-28 04:37:53.298 11467-11467/? E/a: E --- a --- 生成密钥时出现意外错误

下面是proguard文件 - “proguard-rules.pro” -

0 投票
1 回答
793 浏览

android - sqlcipher-for-android-v3.5.6.zip 下载或 sqlcipher for android 的最新二进制文件 - Marshmallow 设备

我打算将 sqlcipher 集成到我现有的 android 应用程序中。我在哪里可以下载最新的 sqlcipher-for-android-v3.5.6.zip 或 sqlcipher for android 的二进制文件?请注意,我的应用程序目标 SDK 指向 Marshmallow 或更高版本的操作系统设备。

0 投票
2 回答
596 浏览

android - 如何将 Greendao 与 sqlcipher 集成

我想在 android studio 中集成 Greendao 和 Sqlcipher 以获得加密的数据库。我使用sqlcipher-for-android

我将这些添加到我的 app/build.gradle

我从这里下载了 v3.5.6 在第二步中我必须执行这些命令

但 zip 文件中没有任何 sqlcipher.jar、armeabi、armeabi-v7a、x86 和 ...

我错过了什么或做错了吗?请帮忙

0 投票
2 回答
6709 浏览

android - 文件已加密或不是数据库:,编译时:select count(*) from sqlite_master;

我有一个已经投入生产多年的应用程序。它附带标准的 Sqlite DB。该应用程序的最新版本集成了 SqlCipher 3.5.6 库。

新数据库中有一些额外的表,所以我在 onUpgrade 方法中创建了它们。

我在我的应用程序对象中调用了以下方法。

旧 apk 中的 DB_VERSION 为 56,我在新 apk 中将其设置为 57,因此应该调用 onUpgrade。

我从 onUpgrade 内部调用 encrypt 方法。

.

当我将新的 apk 加载到安装了旧应用程序的设备上时,我收到以下错误。

我试过的:

SO上的其他帖子说加密方法的密码需要是一个空字符串,以便SqlCipher可以打开一个未加密的数据库。

我已在加密方法上将密码设置为“”,但日志显示无法打开数据库。

谁能告诉我为什么没有打开数据库?它没有达到 onUpgrade 方法。

注意。值得注意的是,当我清除应用程序上的数据时,它工作正常。

[更新 1]

我已将 encrypt 方法移到 Application 类中。在 Application 类的 onCreate 中,我调用:

.

密码短语的加密方法中仍然有一个空字符串参数,但它什么也不做,因为我在下面的实际加密方法中已将其注释掉。

.

我现在收到以下错误:

.

它达到以下并崩溃:

.

[更新 2]

我不确定我是否正确关闭了数据库。LoginValidate 是我的 DB 类,它公开了一个返回 DB 对象的方法。

.

另外我不确定加密方法中的密码。您说不要使用密码,但这是否意味着空字符串或根本不传递密码。我将给出以下示例。第一个是原始的,另外两个是我尝试过的。

0 投票
0 回答
1563 浏览

android - JNI FindClass 以挂起的异常调用 java.lang.ClassNotFoundException:找不到类“net.sqlcipher.database.SQLiteDatabase”

在具有最新版本 SQLCipher (3.5.7) 的 Android 上,从此处克隆 sqlcipher并构建 so 文件,现在在示例项目中使用 libsqlcipher.so 时,获取 java.lang.ClassNotFoundException 这是完整的堆栈跟踪:

构建.gradle

0 投票
0 回答
98 浏览

android - SQLCipher Android 的构造函数

我一直在我的项目中使用 SQLite,我必须迁移到 SQLCipher。我的 DatabaseHelper 类中有一个构造函数。我不在其他任何地方创建数据库。我的构造函数是:

我已经添加SQLiteDatabase.loadLibs(this);onCreate()第一次插入数据的活动。

.sqlite每当我在 SQLite 管理器中打开我的文件时,它都会显示所有数据。我无法理解将代码放在哪里来创建文档中提到的数据库文件。

有人可以指导我吗?

0 投票
1 回答
274 浏览

android - Android 应用程序停止响应 SQLCipher

我刚刚将我的数据库从 SQLite 更改为 SQLCipher。我的应用程序变得异常缓慢。采取点击操作需要很长时间。我研究并发现了这两个可能的原因:

  • 不要重复打开和关闭连接,因为密钥派生非常昂贵,这是设计使然。频繁打开/关闭数据库连接(例如,对于每个查询)是性能问题的常见原因,通常可以使用单例数据库连接轻松解决。

  • 使用事务来包装插入/更新/删除操作。除非在事务范围内执行,否则每个操作都将发生在它自己的事务中,这会使事情减慢几个数量级。

关于第一点,有人可以解释一下反复打开和关闭连接是什么意思。我认为我使用SQLiteDatabase db = this.getWritableDatabase("secure_key);每个查询都是问题所在。关于如何为此使用单例数据库连接类的任何示例都将有很大帮助。

关于第二点,我如何为上述查询使用包装器,它会有用吗?