Как открыть файл с базой данных , закрытой паролем

123
17 марта 2021, 14:50

есть файл который содержит базу данных- он создаётся кодом с#, но есть загвоздка в том, что он с паролем. Вот строка подключения от автора проги , создающей файл:

string constr = String.Format("Data Source = {0};FailIfMissing = false;Read Only = false;Password = {1}", path, pass);
connect = new SQLiteConnection(constr);

используя либы :

System.Data.SQLite.dll и SQLite.Interop.dll

Каким способом можно открыть на java Андройд? и заодно закрыть его тоже)

p.s.

Пытались через chiper , но ничего не вышло:

import net.sqlcipher.database.SQLiteDatabase;
import net.sqlcipher.database.SQLiteOpenHelper;
import android.content.Context;
public class SqlChiperAdapter extends SQLiteOpenHelper {
    public SQLiteDatabase sqLiteDatabase;

    public SqlChiperAdapter(Context ct, String patch, String name, String Secret)
    {
        super(ct,"Dgfgg",null,1);
        SQLiteDatabase.loadLibs(ct);
        sqLiteDatabase= SQLiteDatabase.openOrCreateDatabase(patch+name,Secret,null);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

И что получили:

net.sqlcipher.database.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;
Answer 1

Насколько мне известно, chiper просто берет файл БД и шифрует с помощью AES 256. Раз не удается открыть зашифрованную бд c chiper в андроиде и десктопном браузере бд, значит как-то отличаются методы шифрования. Может ключи разной длинны генерируются, может из-за вектора инициализации какие-то различия возникают... Варианты решения:

  1. избавиться от шифрования, если это позволительно
  2. использовать "прослойку" - некоторый сервер, который будет забирать у основного сервера бд в незашифрованном виде, шифровать понятным чиперу образом и отдавать клиенту
  3. Разобраться с отличиями в шифровании, используемым библиотеками .Net, и шифрованием в чиппере. Если проблема, например, в векторе инициализации, то ее можно порешать программно
READ ALSO
Как сделать слияние двух списков с последующей сортировкой?

Как сделать слияние двух списков с последующей сортировкой?

Даны два спискаНеобходимо слить два списка в один, отсортировать по убыванию и вывести

87
После доставания JSONObject из json пропадает поле id. Java. vk api

После доставания JSONObject из json пропадает поле id. Java. vk api

Изначально json приходит в виде (в списке items есть поле id равное 4 у первого элемента !!!):

114
Создание Java-ярлыка в рабочем окружении KDE. Ubuntu

Создание Java-ярлыка в рабочем окружении KDE. Ubuntu

Хочу создать ярлык Java-приложения у себя на рабочем столе (и вообще чтобы в списке приложений былоФайл я создал в директории usr/share/applications с расширением

103
Локализация с помощью JS

Локализация с помощью JS

Нашел такой код, где уже куча нужных языков и нужный текст

115