как зашифровать базу данных с помощью sql cipher

#iphone #ios4 #sqlite #sqlcipher

#iPhone #ios4 #sqlite #sqlcipher

Вопрос:

Я хочу зашифровать базу данных с помощью sqlcipher.

Я выполнил интеграцию с операционной системой openssl и sqlcipher, и сборка работает идеально.

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

Я читал о SQL Cipher, но я не в состоянии понять тот же процесс. Я попробовал код, который они предоставляют, но не работает.

РЕДАКТИРОВАТЬ: Может ли кто-нибудь рассказать мне, как установить PRAGMA key для того же, а затем как начать с шифрования? Поскольку для завершения моего шифрования осталась только эта часть.

Пожалуйста, помогите мне выйти из этой ситуации.

Заранее спасибо

Комментарии:

1. Я только что просмотрел документы по закону об экспорте дерьмового шифрования (это заняло около месяца, только потому, что я зашифровал дурацкую базу данных). Если вы действительно хотите включить шифрование, оформляйте документы СЕЙЧАС, а не когда будете готовы отправить свое приложение, это сэкономит вам массу времени.

2. вы хотите зашифровать ее внутри iPhone? или до того, как вы получите с сервера или что-то еще?

3. Когда я создаю свою базу данных, она должна быть зашифрована таким образом, чтобы никакое другое внешнее приложение с MAC или Windows не могло получить доступ к базе данных.

Ответ №1:

С помощью SQLCipher убедитесь, что у вас совершенно новая база данных SQLite. Попытка выполнить прагматизацию базы данных с помощью ключа, в то время как в ней по какой-то причине уже есть данные, просто пытается их расшифровать.

Вот некоторая дополнительная информация о работе с существующей базой данных SQLite или здесь. В этом примере encrypted.db — это совершенно новая база данных, которую вы создаете и используете pragma.

 ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'secret'; -- create a new encrypted database
CREATE TABLE encrypted.t1(a,b); -- recreate the schema in the new database (you can inspect all objects using SELECT * FROM sqlite_master)
INSERT INTO encrypted.t1 SELECT * FROM t1; -- copy data from the existing tables to the new tables in the encrypted database
DETACH DATABASE encrypted;
  

Комментарии:

1. Привет, Джо, я попробовал вышеуказанную команду в командной строке sql и также добился успеха, но я не знаю, как использовать то же самое с xcode для разработки и сохранить мой файл .db, зашифрованный с помощью code для iphone. не могли бы вы, пожалуйста, сообщить мне, как это сделать?

2. Какова ваша настройка / цель? У вас на компьютере есть база данных SQLite, которая уже заполнена данными, и вы хотите, чтобы она была уже зашифрована при использовании iPhone? Или у вас просто есть схема, которую необходимо настроить на iPhone, и все собранные данные будут зашифрованы.

3. Если вы используете SQLCipher из iOS, вы будете использовать SQLite C API для взаимодействия с базой данных. В конце этого руководства приведено несколько примеров того, как использовать API для установки пароля. Вы можете найти справочную документацию для SQLite онлайн . Наконец, вы можете посмотреть на GitHub полностью работающее приложение для iOS, использующее SQLCipher под названием SQLCipherSpeed .