标签: sqlcipher

GreenDA与Sqlcipher集成示例

我使用GreenDAO设置了一个新项目,能够使用DaoGenerator使用ExampleDAO生成.一切正常.

我还在android资源文件夹中提供了一个预先填充的sqlite数据库,在app运行时,它被复制到android数据库系统路径.

现在我想与SqlCipher集成,以加密我的数据库...如果有人可以帮助或提供示例应用程序,那将是一个很大的帮助.

android sqlcipher greendao

9
推荐指数
1
解决办法
3252
查看次数

正确的方法来存储SqlCipher数据库的加密密钥

我有一个Xamarin应用程序,并设法将我的数据从我的服务器下载到我的设备.我还设置了它,以便它可以采用SqlCipher加密密钥来加密数据.

我的问题是存储我用于加密此数据的密钥的正确位置在哪里?你是KeyStore/KeyChain吗?我应该使用哪些单声道课程?

c# android xamarin.android sqlcipher xamarin

9
推荐指数
1
解决办法
4011
查看次数

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

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

 DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "encrypted-db",null);

        Database db = helper.getEncryptedWritableDb("mySecretPassword");
        DaoSession session = new DaoMaster(db).newSession();
        return session;
Run Code Online (Sandbox Code Playgroud)

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

 Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/greenrobot/greendao/database/DatabaseOpenHelper$EncryptedHelper;
                                                                       at org.greenrobot.greendao.database.DatabaseOpenHelper.checkEncryptedHelper(DatabaseOpenHelper.java:121)
                                                                       at org.greenrobot.greendao.database.DatabaseOpenHelper.getEncryptedWritableDb(DatabaseOpenHelper.java:133)
Run Code Online (Sandbox Code Playgroud)

我的gradle依赖是 - >

compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'org.greenrobot:greendao:3.2.0'
    compile 'com.google.code.gson:gson:2.8.0'
Run Code Online (Sandbox Code Playgroud)

我的计划是

-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
# If you do not use Rx:
-dontwarn rx.**
Run Code Online (Sandbox Code Playgroud)

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

PS:Database db = helper.getEncryptedWritableDb("mySecretPassword"); 此行在执行任何数据库操作时生成错误.

 Database db …
Run Code Online (Sandbox Code Playgroud)

android sqlcipher greendao sqlcipher-android greendao3

9
推荐指数
1
解决办法
796
查看次数

SQLCipher - 在桌面上打开加密数据库

我在Android上尝试使用SQLCipher.我写了一个小应用程序,在模拟器上创建了一个包含一个表和几条记录的数据库.然后,我将数据库从模拟器拉到我的桌面上.我查看了SQLCipher文档,但我无法弄清楚如何在桌面上实际解密数据库,以便查询其内容.我想确保我实际插入记录.访问记录的最简单的过程是什么?谢谢.

sqlite android sqlcipher

8
推荐指数
1
解决办法
3834
查看次数

如何存储SQLCipher中用于android的密钥

我正在使用SQLCipher for Android.我已经完成了加载lib所需的所有必要的东西,如http://sqlcipher.net/sqlcipher-for-android/中所述

我发现你设置密码即密钥:

    SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
Run Code Online (Sandbox Code Playgroud)

那么你的密码如何从黑客那里获得安全保障?因为它可以从java文件中访问.?

有没有正确的方法可以存储密码?

谢谢,Nibs

sqlite android sqlcipher

8
推荐指数
1
解决办法
6064
查看次数

是否有正确的方法来测试用户提供的SQLCipher密码在Android上是否有效?

我正在使用SQLCipher for Android,我正在尝试确定测试用户提供的密码是否有效的正确方法.

我的第一个倾向是尝试使用给定的密码打开数据库,使用SQLCipher实现SQLiteOpenHelper.getReadableDatabase(password),然后捕获SQLiteException弹出的数据库.

这确实有效,但问题是因为Android API实际上包含了底层的C调用,它为你做了很多工作 - 特别是当你使用Android API打开数据库时,它会打开数据库,运行本机C级sqlite3_key方法(使用提供的密码),然后尝试在数据库上设置区域设置,无论提供的密码是否正确.

此时,Android库尝试设置区域设置,底层数据库抛出"加密或不是数据库" SQLiteException,它被捕获并重新抛出; 但在此之前,会将无关的错误写入日志,实质上是说无法设置区域设置并且数据库正在关闭(包含堆栈跟踪).因为这是由Android库专门编写的,所以我无法抑制它,在日志中留下一个实际上与我原来的问题无关的丑陋错误,这只是我传入了错误的密码.

因为Android库不公开C级调用,所以我不能只使用SQLCipher API文档中描述的关于测试密钥的方法,因为我没有权限直接打开数据库.

我倾向于使用SQLiteDatabaseHook,但最好的我能说,这排除了我的使用SQLiteOpenHelper,这似乎没有提供设置钩子的方法.

有没有其他人知道更好的方法来测试输入密码是否通过SQLCipher Android API正确解密SQLCipher数据库?我完全希望调用一个方法并检查抛出的异常 - 我不想要的是操作尝试在数据库上执行无关的处理(如set locale)并在我的日志中写入一个完全不可抑制的错误.

android sqlcipher

7
推荐指数
1
解决办法
1746
查看次数

我正在使用SQLCIPHER读取或写入数据库获取错误

Hiee,我正在使用sqlcipher来读取数据库但是在读取数据之前它会给出以下错误.下面是我的logcat请看看.

E/AndroidRuntime(21826): FATAL EXCEPTION: main
02-27 11:33:10.608: E/AndroidRuntime(21826): java.lang.UnsatisfiedLinkError: Native     method not found: net.sqlcipher.database.SQLiteDatabase.dbopen:(Ljava/lang/String;I)V
02-27 11:33:10.608: E/AndroidRuntime(21826): at net.sqlcipher.database.SQLiteDatabase.dbopen(Native Method)
02-27 11:33:10.608: E/AndroidRuntime(21826): at net.sqlcipher.database.SQLiteDatabase.    <init>(SQLiteDatabase.java:1942)
02-27 11:33:10.608: E/AndroidRuntime(21826): at net.sqlcipher.database.SQLiteDatabase.<init>(SQLiteDatabase.java:1920)
02-27 11:33:10.608: E/AndroidRuntime(21826): at example.SQLDemoActivity.onCreate(SQLDemoActivity.java:19)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.app.Activity.performCreate(Activity.java:5020)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.app.ActivityThread.access$600(ActivityThread.java:149)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 11:33:10.608: E/AndroidRuntime(21826): at android.os.Looper.loop(Looper.java:153)
02-27 11:33:10.608: E/AndroidRuntime(21826): at …
Run Code Online (Sandbox Code Playgroud)

database sqlite android sqlcipher

7
推荐指数
1
解决办法
5643
查看次数

net.sqlcipher.database.SQLiteException:不是错误:

我在我的Android应用程序数据库中收到此错误.

SQLite数据库中,我assets借助此代码从文件夹中的脚本获取数据库查询.

manager = context.getResources().getAssets();
            input = manager.open("createDb.xml");
            xpp.setInput(input, null);
            int type = xpp.getEventType();
            while(type != XmlPullParser.END_DOCUMENT) {
                if(type == XmlPullParser.START_DOCUMENT) {

                    Log.d(Tag, "In start document");
                }
                else if(type == XmlPullParser.START_TAG) {
                    Log.d(Tag, "In start tag = "+xpp.getName());
                }
                else if(type == XmlPullParser.END_TAG) {
                    Log.d(Tag, "In end tag = "+xpp.getName());

                }
                else if(type == XmlPullParser.TEXT) {
                    Log.d(Tag, "Have text = "+xpp.getText()); 
                    String strquery = xpp.getText();
                    db.execSQL(strquery);
                }
                type = xpp.next();
            }
        } 
        catch (XmlPullParserException e) { …
Run Code Online (Sandbox Code Playgroud)

sqlite android xmlpullparser sqlcipher

6
推荐指数
2
解决办法
2296
查看次数

iOS Magical Record和SQLCipher

我使用魔法记录来保存我的数据.此数据需要加密,因此我尝试将其与SQLCipher库(http://sqlcipher.net/ios-tutorial/)结合使用.

我已经设置了SQLCipher,并使用此示例中的EncryptedStore文件成功测试了Core Data,https://github.com/project-imas/encrypted-core-data:

我所做的只是像这样改变了NSPersistentStoreCoordinator:

NSPersistentStoreCoordinator*coordinator = [EncryptedStore makeStore:[self managedObjectModel]:[SSKeychain passwordForService:myservice account:myaccount]];

所以我想我需要改变在MagicalRecord中创建NSPersistentStoreCoordinator的方式,但我没有运气,所以任何帮助都会受到赞赏.

iphone ios sqlcipher magicalrecord

6
推荐指数
1
解决办法
1414
查看次数

构建SQLCipher时出现致命错误(找不到'openssl/rand.h'文件)

我正在尝试在我的Mac上构建SQLCipher并在运行make后出现致命错误.

系统:OS X El Capitan我按照说明安装了openssl .

在运行make之前,我将libcrypto.a与命令静态链接

./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" \
    LDFLAGS="/usr/local/opt/openssl/lib/libcrypto.a"
Run Code Online (Sandbox Code Playgroud)

我得到的错误

sqlite3.c:18280:10: fatal error: 'openssl/rand.h' file not found
#include <openssl/rand.h>
         ^
1 error generated.
make: *** [sqlite3.lo] Error 1
Run Code Online (Sandbox Code Playgroud)

sqlite macos sqlcipher osx-elcapitan

6
推荐指数
1
解决办法
3533
查看次数