标签: sqlcipher

将sqlite转换为加密数据库:

我的应用程序中有一个现有的sqlite数据库.它运行成功.现在我需要使用sqlcipher加密数据库.我的问题是在将sqlite转换为加密时我得到了以下异常.

net.sqlcipher.database.SQLiteException: table android_metadata already exists
 at net.sqlcipher.database.SQLiteDatabase.native_rawExecSQL(Native Method)
 at net.sqlcipher.database.SQLiteDatabase.rawExecSQL(SQLiteDatabase.java:1851)
 at com.x.y.convert_sqlite_to_sqlcipher(Practitioner_menu.java:2626)
 at com.x.y$AdminProcess.doInBackground(Practitioner_menu.java:1659)
 at com.x.y$AdminProcess.doInBackground(Practitioner_menu.java:1)
 at android.os.AsyncTask$2.call(AsyncTask.java:287)
 at java.util.concurrent.FutureTask.run(FutureTask.java:234)
 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
 at java.lang.Thread.run(Thread.java:856)
Run Code Online (Sandbox Code Playgroud)

我的转换代码:

File old_sqliteFile = getDatabasePath("old_db.sqlite");
File databaseFile = getDatabasePath("new_db.db");
        databaseFile.mkdirs();
        databaseFile.delete();
    database = SQLiteDatabase.openOrCreateDatabase(databaseFile,
                    "password", null);
database.rawExecSQL(String.format(
                    "ATTACH DATABASE '%s' AS encrypted KEY '%s'",
                    databaseFile.getAbsolutePath(), "password");
            database.rawExecSQL("select sqlcipher_export('encrypted')");
            database.rawExecSQL("DETACH DATABASE encrypted");
            database.close();
Run Code Online (Sandbox Code Playgroud)

请有人帮我弄清楚我做错了什么?

sqlite android sqlcipher

2
推荐指数
1
解决办法
2424
查看次数

在Mac OS 10.8(64位)上编译SQLCipher

当我在MacOS 64bit上编译SQLCIPHER时

./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2" LDFLAGS="/Users/administrator/Documents/openssl/lib/libcrypto.a"
Run Code Online (Sandbox Code Playgroud)

我得到32位lib libsqlite3.a但我需要64位libsqlite3.a

我怎么能这样做?

macos static-libraries 32bit-64bit sqlcipher

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

在 Ubuntu 14.10 上配置 SQLCipher

我在配置 SQLCipher 时遇到问题:
在动态链接中
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
我收到此错误:检查 C 编译器是否工作...否
,在静态链接中
./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/usr/local/openssl/lib/libcrypto.a"
此错误:配置:错误:未找到库加密。安装 openssl!”

对于静态方法,我构建了最新版本的 openssl

怎么了?

linux openssl configure sqlcipher ubuntu-14.10

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

如何保护 Android 中的 SQLITE 数据库?

目前我正在开发一个Android应用程序,它存储用户的重要数据,例如密码,卡号,网站用户名和密码等。我决定使用SQLITE DB,以便用户的数据可以驻留在他们自己的手机中,并且我计划实施 AES-256 算法 (SQLCiper),以便使用密钥对数据进行加密。但我担心的是它能发挥多大作用,如果有人进行逆向工程或 root 会发生什么?

请帮助我弄清楚这一点。

提前致谢。

sqlite android sqlcipher android-sqlite android-studio

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

在Android上使用SQLCipher

我之前已经问过这个问题并且没有得到任何适当的答案.

我在Play商店发布了一个应用程序,它大量使用SQLite数据库.

现在我需要使用SQLCipher来保护数据库.这是我面临的一些问题.

1)如何将SQLCipher与我现有的未加密数据库无缝集成,以便我的应用程序正常工作但现在数据库已加密?

(我想要一个简短的教程)

2)我应该如何检查数据库是否未加密,然后如何加密?我应该只做一次吗?什么应该是最好的做法?

(可能的副本不回答这个)

3)当我加密现有的未加密数据库时,SQLCipher是否创建了一个新数据库?如果是的话,我应该如何管理这个新的?那个未加密的旧数据库怎么样?它还留在那里吗?

(重复问题中也没有提供此解释)

encryption android sqlcipher android-sqlite

0
推荐指数
1
解决办法
1350
查看次数

从 macOS 构建 sqlcipher3 时出现致命错误(未找到“sqlcipher/sqlite3.h”文件)

我一直在尝试使用以下命令在 MacOS 上构建 sqlcipher3:

git clone https://github.com/coleifer/sqlcipher3 && cd sqlcipher3
python3 setup.py build
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

$ python3 setup.py build
running build
running build_py
creating build
creating build/lib.macosx-10.14-x86_64-3.7
creating build/lib.macosx-10.14-x86_64-3.7/sqlcipher3
copying sqlcipher3/__init__.py -> build/lib.macosx-10.14-x86_64-3.7/sqlcipher3
copying sqlcipher3/dbapi2.py -> build/lib.macosx-10.14-x86_64-3.7/sqlcipher3
running build_ext
Builds a C extension linking against libsqlcipher library
building 'sqlcipher3._sqlite3' extension
creating build/temp.macosx-10.14-x86_64-3.7
creating build/temp.macosx-10.14-x86_64-3.7/src
xcrun -sdk macosx clang -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Qunused-arguments -DMODULE_NAME="sqlcipher3.dbapi2" -I/usr/include -I/Users/gab/Downloads/testbuild/venv/include -I/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/include/python3.7m -c src/module.c -o build/temp.macosx-10.14-x86_64-3.7/src/module.o
In file included from src/module.c:24:
src/connection.h:34:10: fatal …
Run Code Online (Sandbox Code Playgroud)

c homebrew build sqlcipher

0
推荐指数
1
解决办法
1261
查看次数

Mirth & Mysql [javax.net.ssl.SSLHandshakeException: 没有合适的协议(协议被禁用或密码套件不合适)]

我将 mirth 安装在一个 Ec2 Linux 实例中,而我的 mysql 则放置在另一个 Ec2 实例中。在 mirth.properties 中,我已经为 mysql 创建了配置 url。

当服务启动时,它会自动停止,并在日志中记录此错误消息

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
        at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
        at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:361)
        at com.mysql.cj.protocol.a.NativeAuthenticationProvider.negotiateSSLConnection(NativeAuthenticationProvider.java:777)
        at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:486)
        at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:202)
        at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1452)
        at com.mysql.cj.NativeSession.connect(NativeSession.java:165)
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:955)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)
        ... 37 more
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol …
Run Code Online (Sandbox Code Playgroud)

mysql amazon-ec2 mirth sqlcipher

0
推荐指数
1
解决办法
1837
查看次数

应用程序崩溃时将minifyEnabled设置为true

我正在使用greendao + sqlcipher并helper.getEncryptedWritableDb("sdfbdfsjkdjkf"); 使用proguard 创建加密数据库并添加了规则

### greenDAO 3
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties

# If you do not use SQLCipher:
-dontwarn org.greenrobot.greendao.database.**
# If you do not use RxJava:
-dontwarn rx.**

### greenDAO 2
-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties




#######################################################################






-keep public class net.sqlcipher.** {
    *;
}

-keep public class net.sqlcipher.database.** {
    *;
}
Run Code Online (Sandbox Code Playgroud)

我将minifyEnabled设置为true的那一刻.我的应用程序在安装后启动时崩溃.

debug {


            shrinkResources false
            minifyEnabled false …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android sqlcipher greendao android-proguard

-1
推荐指数
1
解决办法
844
查看次数