我使用过DBFlow,这对于数据库来说非常简单,但我想问一下使用SQLCipher和DBFlow是否有一个很好的例子
我已经获取此链接以获取帮助
但是,如果任何人能提供一些简单的例子,那么用简单的步骤创建安全的数据库应用程序将非常有帮助。
答案 0 :(得分:3)
由ConductedClever链接的使用文档看起来并不多,但这确实几乎是您所需要的。除了可以提到的一些细节:
我不得不将@aar添加到build.gradle中的dbflow-cipher依赖项中,以便首先将它移到gradle:
// build.gradle
def dbflow_version = "3.1.1"
def sqlcipher_version = "3.5.4"
dependencies {
annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}"
compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}@aar"
compile "net.zetetic:android-database-sqlcipher:${sqlcipher_version}@aar"
}
将密码更改为首选:
// SQLCipherHelperImpl.java
public class SQLCipherHelperImpl extends SQLCipherOpenHelper {
public SQLCipherHelperImpl(DatabaseDefinition databaseDefinition, DatabaseHelperListener listener) {
super(databaseDefinition, listener);
}
@Override
protected String getCipherSecret() {
return "your-cipher-secret";
}
}
如果您遵循dbflow getting started guide并且您的数据库名为AppDatabase,那么这是您在初始化DBFlow时应传递给new DatabaseConfig.Builder(AppDatabase.class)
的类:
// AppDatabase.java
@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)
public class AppDatabase {
public static final String NAME = "AppDatabase";
public static final int VERSION = 1;
}
// DatabaseApplication.java
public class DatabaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FlowManager.init(new FlowConfig.Builder(this)
.addDatabaseConfig(
new DatabaseConfig.Builder(AppDatabase.class)
.openHelper(new DatabaseConfig.OpenHelperCreator() {
@Override
public OpenHelper createHelper(DatabaseDefinition databaseDefinition, DatabaseHelperListener helperListener) {
return new SQLCipherHelperImpl(databaseDefinition, helperListener);
}
})
.build())
.build());
}
}
导出数据库并尝试在SQLite客户端中打开它。现在这应该导致加密失败。
答案 1 :(得分:0)
我还没有尝试过,但这是官方开发者提供的关于使用SQLcipher的使用文档: