Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.64
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
#1

SQLite база данных с паролем - Программирование Android

03.12.2013, 18:14. Просмотров 3173. Ответов 7
Метки нет (Все метки)

Есть база данных защищенная ключом!
Сама база данных хранится на устройстве. При подключении к базе надо как то передать пароль, но в интернете ничего не нашел на эту тему. Подключение осуществляется следующим образом:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
 public MyDatabase(Context context) {
       super(context, DATABASE_NAME, null, DATABASE_VERSION);  
        //super(new DatabaseContext(context), DATABASE_NAME, null, DATABASE_VERSION);]
       File sdcard = Environment.getExternalStorageDirectory();    
       String dbfile = sdcard.getAbsolutePath() + File.separator+ "databases" + File.separator + "en.db";
       if (!dbfile.endsWith(".db"))
       {
           dbfile += ".db" ;
       }
 
       File result = new File(dbfile);
       database = SQLiteDatabase.openOrCreateDatabase(result, null); 
    }
Очень надеюсь на хоть какую-то помощь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
03.12.2013, 22:20     SQLite база данных с паролем #2
Насколько я знаю, официально шифрование и пароли в SQLite не поддерживается!!!!
Есть сторонняя наработка (библиотека), но за ее надежность не ручаюсь (самому запустить не удалось).
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
03.12.2013, 22:36  [ТС]     SQLite база данных с паролем #3
Tester64,
вы случаем не SQLCiphe имеете ввиду?
Просто не хотелось бы выкладывать базу данных в открытую. Столько труда было на нее потрачено...
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.12.2013, 01:48     SQLite база данных с паролем #4
Цитата Сообщение от suvorov Посмотреть сообщение
вы случаем не SQLCiphe имеете ввиду?
Похоже - ДА (давно искал прошлый раз). Пока в своем проекте отказался от шифрования... Отложил "на потом".

Насколько я помню, минусами этой библиотеки были
1) большая программа (увеличивала размер программы чуть-ли не на 3х мегабайта)
2) возможны проблемы при использовании класических библиотек и вьювов

Можешь попробовать вручную зашифровать текстовые поля базы простыми алгоритмами (будут проблемы с быстрым поиском по индексам)
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
04.12.2013, 02:49  [ТС]     SQLite база данных с паролем #5
Цитата Сообщение от Tester64 Посмотреть сообщение
Можешь попробовать вручную зашифровать текстовые поля базы простыми алгоритмами
Это совсем не вариант, так как база очень большая.

Выходит никаких вариантов нет? Кто использовал SQLCiphe, поделитесь опытом!?
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.12.2013, 04:19     SQLite база данных с паролем #6
Цитата Сообщение от suvorov Посмотреть сообщение
Это совсем не вариант, так как база очень большая.
Если глобальный поиск не нужен, то вполне подойдет! Зашифруешь один раз (долго), а расшифровывай только нужное. Вполне пойдет для простых справочников - код - название - инфо (блюда, болячки, товары)

p.s. SQLCiphe не использовал, но хотел бы... Сейчас времени на тесты нет. Мне ЗДЕСЬ никто дельных советов по этому вопросу не дал (пол года назад задавал). Если получится - отпишись! Хочется знать что это хоть у кого-то получилось, значит и у меня есть шанс!
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
06.12.2013, 03:32  [ТС]     SQLite база данных с паролем #7
Несколько часов провел за SQLChiper. Этот код я взял с их оф сайта. При попытке соединиться с базой, выдает такую ошибку:
net.sqlcipher.database.SQLiteException: file is encrypted or is not a database
Может быть файл не так закодирован? Знает может кто, как привильно ключ задавать?


Java
1
2
3
4
5
6
7
SQLiteDatabase.loadLibs(context);
       
       File sdcard = Environment.getExternalStorageDirectory();    
            
       String dbfile = sdcard.getAbsolutePath() + File.separator+ "Android" + File.separator + "obb" + File.separator + "com.test.nl" + File.separator + "main.2.com.test.nl.db";
 
       database = SQLiteDatabase.openOrCreateDatabase(dbfile, "test123", null);
Добавлено через 21 час 4 минуты
Для добавления ключа использовал 3 разные программы. Так вот, каждая их них не может открыть зашифрованную базу другой программы. Возможно и из-за этого на андроиде тоже по этой причине не открывает...
Использовал SQLiteManager, SQLite Maestro и SQLiteExpertPro.
Помогите
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 21:13     SQLite база данных с паролем
Еще ссылки по теме:
База SQLite: метод по созданию таблицы не вызывается Android
Постолбцовое отображение данных из базы данных SQLite Android
Вывод данных из базы данных SQLite Android
SQLite вывод данных Android
Android Запись данных в 2 таблицы SQLite

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
06.12.2013, 21:13     SQLite база данных с паролем #8
Я так понимаю: SQLiteManager, SQLite Maestro и SQLiteExpertPro поддерживают класическую схему базы, а SQLChiper полностью ее подменят ради шифрования. В результате все программы будут натыкаться на "не правильные" значения в нужных местах и "вылетать". Если библиотека вооще у тебя заработает (надеюсь! у меня не получилось), то тебе прийдется создавать ПОЛНОСТЬЮ свои инструменты для чтения, записи и отладки работы с базой (адская работка, но результат полезный).
Yandex
Объявления
06.12.2013, 21:13     SQLite база данных с паролем
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru