Расшифровать SQLCipher в проекте Maven

#java #maven #encryption #sqlcipher

#java #maven #шифрование #sqlcipher

Вопрос:

У меня есть проект Android с базой данных, которая была зашифрована с помощью SQLCipher (net.sqlcipher.database.SQLiteOpenHelper). Все это работает, и я могу получить доступ к расшифрованным данным через DB-browser на моем рабочем столе.

Однако у меня есть серверный проект Maven (может быть любым, но этот — Maven), который должен обрабатывать данные дальше.

Мой вопрос: как мне расшифровать данные для обработки в проекте Java / Maven?

Чтобы привести пример кода, я в настоящее время получаю доступ к базе данных как таковой:

 try {
        Class.forName("org.sqlite.JDBC");
        c = DriverManager.getConnection("jdbc:sqlite:C:\Users\Username\Desktop\" path);
    }
    catch (Exception e) {
        System.err.println(e.getClass().getName()   ": "   e.getMessage());
    }
    return c;
  

И я использую результирующий набор, подобный этому:

 ResultSet myGet(Connection db, String sql){
    try {
        return db.createStatement().executeQuery(sql);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}
  

До шифрования базы данных вышеуказанное работало бы, но теперь это, очевидно, не так. Я получаю следующую ошибку:

 org.sqlite.SQLiteException: [SQLITE_NOTADB]  File opened that is not a database file (file is not a database)
  

Ответ №1:

Если вы используете JDBC, вам понадобится драйвер, специально созданный с поддержкой SQLCipher. Программа SQLCipher Enterprise предлагает такой драйвер.