2016-06-21 3 views
1

Я работал с DBFlow который довольно просто играть вокруг базы данных, но я хочу спросить, есть хороший пример использования SQLCipher с DBFlowSQLCipher вместе с DBFlow

Я Folowed эту ссылку за помощью

Raizlabs/DBFlow

Но если кто-то может предоставить простой пример, это будет очень полезно для создания безопасного приложения базы данных с помощью простых шагов.

+0

У вас есть решение для шифрования базы данных DBFlow с помощью SQLCipher? –

ответ

0

Я не пробовал еще, но это документ использования, что официальный разработчик предоставляет об использовании SQLcipher:

SQL Cipher & DBFlow

1

Док использования связаны ConductedClever не выглядит как много, но это действительно, почти все, что вам нужно. для некоторых деталей, которые могут быть упомянуты, за исключением:

мне пришлось добавить @aar к dbflow-шифром зависимости в build.gradle, чтобы получить его прошлое 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, то это класс, вы должны перейти к new DatabaseConfig.Builder(AppDatabase.class) при инициализации DBFlow:

// 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 Client. Это может привести к сбою в шифровании.

Смежные вопросы