标签: sqlcipher

使用SQLCipher库时出现不满意的链接错误

我正在使用Android的SQLCipher库来加密/解密DB文件.我遵循API中讨论的添加库的确切步骤.

但是当我运行项目时,我收到一个不满意的链接错误...这是logcat ...

11-15 13:12:08.482: ERROR/AndroidRuntime(340): java.lang.UnsatisfiedLinkError: dbopen
11-15 13:12:08.482: ERROR/AndroidRuntime(340):     at info.guardianproject.database.sqlcipher.SQLiteDatabase.dbopen(Native Method)
11-15 13:12:08.482: ERROR/AndroidRuntime(340):     at info.guardianproject.database.sqlcipher.SQLiteDatabase.<init>(SQLiteDatabase.java:1876)
11-15 13:12:08.482: ERROR/AndroidRuntime(340):     at info.guardianproject.database.sqlcipher.SQLiteDatabase.openDatabase(SQLiteDatabase.java:870)
11-15 13:12:08.482: ERROR/AndroidRuntime(340):     at info.guardianproject.database.sqlcipher.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:904)
11-15 13:12:08.482: ERROR/AndroidRuntime(340):     at info.guardianproject.database.sqlcipher.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:107)
11-15 13:12:08.482: ERROR/AndroidRuntime(340):     at com.myproject1.getInstance(AppData.java:60)
Run Code Online (Sandbox Code Playgroud)

请给我任何参考或提示.

android sqlcipher

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

SQLCipher是否允许其他应用程序访问数据库.(如果是SD-CARD中的数据库)

我在SQLCiper尝试一件事.

这件事在SQLite数据库中取得了成功 SD-CARD

1-创建一个应用程序firstApp.与数据库在SD-CARD

2-创建的第二应用程序secondApp.

我试图在我的第二个应用程序中读取SD-CARD中的数据.

编辑: - SDCARD中的我的数据库.

public class SdcardCipherDataBase extends SQLiteOpenHelper
{

    public static final String  DATABASE_FILE_PATH = "/sdcard";
    public static final String  DATABASE_NAME = "sdCipherDatabase";
    public final static String NAME ="name";
    public final static String ADDRESS ="address";
    public final static String CITY ="city";

    public SdcardCipherDataBase(final Context context) {
        super(context,Environment.getExternalStorageDirectory()+File.separator+DATABASE_FILE_PATH + File.separator + DATABASE_NAME, null, 1);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        try
        {  
            db.execSQL( "CREATE TABLE information(_id INTEGER PRIMARY KEY …
Run Code Online (Sandbox Code Playgroud)

android sqlcipher

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

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
查看次数

适用于Android的SQLCipher:icudt46l.zip真的需要吗?

我当时并不需要本地化数据文件icudt46l.zip,但如果我不在Nexus 5中包含它,我会收到运行时错误:

E/AndroidRuntime(4341): Caused by: net.sqlcipher.database.SQLiteException: not an error

这意味着,总体而言,几乎额外的文件7MB都需要SQLCipher的Android:
- 2.7MB资产/ icudt46l.zip
- 0.2MB的lib/armeabi/libdatabase_sqlcipher.so
- 2.3MB的lib/armeabi/libsqlcipher_android.so
- 0.4MB的lib/armeabi/libstlport_shared.so
- 0.1MB lib/commons-codec.jar
- 1.1MB lib/guava-r09.jar
- 0.1MB lib/sqlcipher.jar

是否其他人都需要包含文件icudt46l.zip?

android sqlcipher android-sqlite

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

加密sqlite数据库Android:

嗨,我正在运行的应用程序,我已经有一个现有sqlite的数据库.现在问题是任何人都可以sqlite database从设备中拔出并可以使用它.现在我需要encrypt the sqlite file.我发现它SQLCipher用于加密sqlite数据库.但真正的问题是我没有任何想法,SQLCipher也不知道它是如何工作的.尝试使用不同的项目.什么都没有帮助.请有人告诉我如何加密我的sqlite数据库.

提前致谢.

database sqlite encryption android sqlcipher

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

Android Studio(Beta v0.8.6)和SQLCipher(v3.1.0)集成

我很长一段时间一直在寻找解决问题的方法,我只想与可能遇到同样问题的其他人分享我的解决方案.

我来自Eclipse IDE开发Android应用程序,我想查看Android Studio IDE.所以我下载了当前的Android Studio(BETA v0.8.6),到目前为止我真的很喜欢Android Studio的功能.

我的问题:我正在使用SQLCipher库将加密的数据库包含到我的项目中.不幸的是,将SQLCipher集成到Android Studio中并不像他们在官方SQLCipher网站上所说的那样(因为howto是为Eclipse IDE编写的).所以我在网上搜索将SQLCipher集成到Android Studio的解决方案,因为我无法将其导入到我的主活动java类中.

我的解决方案:您从官方网站下载SQLCipher版本.在该文件夹中,您将看到两个文件夹."assets"文件夹和"libs"文件夹.

在"libs"文件夹中,每个支持的体系结构都有*.jar文件和一些文件夹,其中包含一些*.so文件.

现在,您执行以下操作:

  1. 转到项目文件夹(标准输入:C:\ Users \\ AndroidStudioProjects \)
  2. 打开"app"文件夹
  3. 将三个.jar文件(commons-codec,guava-r09,sqlcipher)复制到"lib"文件夹中.
  4. 现在转到:app\src\main并创建两个文件夹:"assets"和"jniLibs".
  5. 将icudt46l.zip文件复制到"assets"文件夹中.
  6. 将"armeabi","armeabi-v7a"和"x86"文件夹复制到"jniLibs"文件夹中.

现在启动Android Studio并打开您的项目.在Android Studio中,您可以在左侧的树状视图中看到这些文件.

  1. 在Android Studio中展开"app"文件夹,以便查看"build.gradle"文件.
  2. 打开"build.gradle"文件.
  3. 现在在grade.build文件中,确保此代码片段包含在文件的底部:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 它现在看起来应该类似于:

    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 'android-L'
        buildToolsVersion "20.0.0"
        defaultConfig {
            applicationId "com.example.testapp"
            minSdkVersion 15
            targetSdkVersion 'L'
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                runProguard false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        sourceSets {
            main {
                jniLibs.srcDirs = …
    Run Code Online (Sandbox Code Playgroud)

integration android sqlcipher

6
推荐指数
0
解决办法
1285
查看次数

将pysqlcipher与SqlAlchemy一起使用?

我正在尝试向程序中添加一些代码以加密我使用的sqlite数据库。我试图提示用户输入密码,并使用该密码创建新的加密数据库(如果不存在),或者解密并加载现有的数据库。我似乎找不到很多文档,而且我不确定该怎么做。我的代码如下:

if encryption is True:
   print("***PYPER TIMESHEET UTILITY***")
   print("\nEnter encryption password below:")
   key = getpass.getpass()
   DB_NAME = ".timesheet.db"
   engine = create_engine('sqlite:///{}'.format(DB_NAME), module=sqlite)

else:

   print("WARNING: Unencrypted session. Install pysqlcipher3 to enable encryption\n")
   DB_NAME = ".timesheet.db?cipher=aes-256-cfb&kdf_iter=64000"
   engine = create_engine('sqlite:///{}'.format(DB_NAME))
   DBSession = sessionmaker(bind=engine)
   session = DBSession()
Run Code Online (Sandbox Code Playgroud)

编辑:忘记提供更多的信息。

我已经尝试了sqlalchemy列出的内容。在上面的示例中,我意识到我遗漏了一条重要的线,

from pysqlcipher import dbapi 2 as sqlite
Run Code Online (Sandbox Code Playgroud)

链接到完整代码

python sqlalchemy python-2.7 sqlcipher

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

使用DBFlow,如何加密已存在的数据库?

我正在使用DBFlow来处理项目中的数据库,并且我希望对现有数据库进行加密.

我知道我可能不得不删除现有的未加密数据库并创建另一个加密数据库.而且我也知道我可以像文档中所描述那样使用SQLCipher和DBFlow .

我的问题是:我应该如何以及何时删除数据库,如何在不请求用户卸载应用程序的情况下重新创建数据库?可以通过迁移完成吗?

请提供一些如何实现这一目标的代码.谢谢.

database android sqlcipher dbflow

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

构建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
查看次数