问题标签 [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.
android - android应用程序中带有密码的Robolectric问题
嗨,我正在使用 Robolectric 进行测试用例。在模拟与加密相关的测试用例时,我遇到了一些问题。我尝试使用带有 AES 的密码进行加密。它给了我一些错误。我以以下方式尝试过:
它给了我以下错误:
我已经添加JCE
了非法大小异常。如果我在设备上运行它并在我的应用程序中正常工作,它就可以工作。只有当我尝试使用 robolectric 时,它才会给我这个错误。需要一些帮助。谢谢你。
android - 将表从一个数据库移动到另一个
我有两个数据库,一个是 SQLite db_1
,另一个是 SQLCipher db_2
。我想把一张桌子从db_1
移到db_2
。
由于我在其中一个数据库中使用SQLCipher,因此我不能ATTACH
在数据库中复制 Table 及其内容从一个数据库到另一个数据库。
是否可以使用数据库查询或 Android 代码或两者都以某种方式将表db_2
移动db_1
到onUpgrade()
.
笔记 :
尝试访问ATTACH
数据库时出现以下错误
android - Android无法使用greendao使用sqlcipher加密数据库
我正在使用greendao ORM。我正在尝试使用 SQLCipher 加密我的数据库。Greendao 自动支持 sqlcipher。所以我写了下面的代码进行加密。
但是,每当我使用此会话执行任何数据库操作时,它都会出错
我的 gradle 依赖项是->
我的proguard规则是
那么如何使用 greendao 和 SQLCipher 加密我的数据库呢?
PS:Database db = helper.getEncryptedWritableDb("mySecretPassword");
这一行在执行任何数据库操作时都会产生错误。
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” -
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 或更高版本的操作系统设备。
android - 如何将 Greendao 与 sqlcipher 集成
我想在 android studio 中集成 Greendao 和 Sqlcipher 以获得加密的数据库。我使用sqlcipher-for-android
我将这些添加到我的 app/build.gradle
我从这里下载了 v3.5.6 在第二步中我必须执行这些命令
但 zip 文件中没有任何 sqlcipher.jar、armeabi、armeabi-v7a、x86 和 ...
我错过了什么或做错了吗?请帮忙
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 对象的方法。
.
另外我不确定加密方法中的密码。您说不要使用密码,但这是否意味着空字符串或根本不传递密码。我将给出以下示例。第一个是原始的,另外两个是我尝试过的。
android - JNI FindClass 以挂起的异常调用 java.lang.ClassNotFoundException:找不到类“net.sqlcipher.database.SQLiteDatabase”
在具有最新版本 SQLCipher (3.5.7) 的 Android 上,从此处克隆 sqlcipher并构建 so 文件,现在在示例项目中使用 libsqlcipher.so 时,获取 java.lang.ClassNotFoundException 这是完整的堆栈跟踪:
构建.gradle
android - SQLCipher Android 的构造函数
我一直在我的项目中使用 SQLite,我必须迁移到 SQLCipher。我的 DatabaseHelper 类中有一个构造函数。我不在其他任何地方创建数据库。我的构造函数是:
我已经添加SQLiteDatabase.loadLibs(this);
了onCreate()
第一次插入数据的活动。
.sqlite
每当我在 SQLite 管理器中打开我的文件时,它都会显示所有数据。我无法理解将代码放在哪里来创建文档中提到的数据库文件。
有人可以指导我吗?
android - Android 应用程序停止响应 SQLCipher
我刚刚将我的数据库从 SQLite 更改为 SQLCipher。我的应用程序变得异常缓慢。采取点击操作需要很长时间。我研究并发现了这两个可能的原因:
不要重复打开和关闭连接,因为密钥派生非常昂贵,这是设计使然。频繁打开/关闭数据库连接(例如,对于每个查询)是性能问题的常见原因,通常可以使用单例数据库连接轻松解决。
使用事务来包装插入/更新/删除操作。除非在事务范围内执行,否则每个操作都将发生在它自己的事务中,这会使事情减慢几个数量级。
关于第一点,有人可以解释一下反复打开和关闭连接是什么意思。我认为我使用SQLiteDatabase db = this.getWritableDatabase("secure_key);
每个查询都是问题所在。关于如何为此使用单例数据库连接类的任何示例都将有很大帮助。
关于第二点,我如何为上述查询使用包装器,它会有用吗?