Шифрование базы данных SQLite3 - определение библиотеки шифрования? - PullRequest
3 голосов
/ 01 марта 2012

Я рассматриваю возможность поддержки зашифрованных баз данных sqlite для приложения PHP.Я использую расширение SQLite3 для PHP, и кажется, что они уже поддерживают метод шифрования, по крайней мере, конструкция SQLite3 :: __ позволяет передавать ключ шифрования.

То, что я не смог выяснить, так это:о какой библиотеке шифрования они говорят в документации.По поиску, я нашел следующее:

  • sqlcipher
  • sqlite see
  • sqlite crypt

Что мне не ясно:

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

Любая помощь очень ценится!

Ответы [ 4 ]

2 голосов
/ 03 марта 2012

Библиотека SQLite3 должна быть построена с поддержкой шифрования. Эти проекты (и еще несколько: https://stackoverflow.com/a/5877130/502789) можно использовать для получения sqlite3.so/dll с поддержкой шифрования.

Итак, вопросы ...

  1. Они не интегрируются с sqlite. Они предлагают замену библиотеки sqlite3 с поддержкой шифрования
  2. Vanilla SQLite3 предоставляет API, необходимый для шифрования, но он не реализован. Я считаю, что SQLiteCrypt использует свой собственный API и поэтому не будет работать здесь (не цитируйте меня об этом).
  3. Ваша установка SQLite3 не поддерживает ее, вам необходимо заменить ее библиотекой SQLite3, скомпилированной с этой функцией (см. Параметры, которые я связал).

NB. Я не использовал шифрование PHP + SQlite3.

1 голос
/ 07 июля 2012

Один пост, который показался полезным для шифрования SQLite, был опубликован администратором и объяснил, как использовать sqlcipher http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/14965-android-database-encryption-sqlcipher-library.html

1 голос
/ 01 марта 2012

Насколько мне известно, пароль, который вы передаете открытому PHP, будет работать, только если вы используете версию SQLite, скомпилированную с поддержкой шифрования (то есть шифрование не работает в сборке по умолчанию).

Некоторые пользователи успешно использовали SQLCipher с PHP, создавая программное обеспечение PHP с использованием кодовой базы SQLCipher.Более подробная информация доступна в теме здесь:

http://groups.google.com/group/sqlcipher/browse_thread/thread/6d77e4ef2a1530d7

0 голосов
/ 08 марта 2018

Пожалуйста, смотрите мой ответ здесь: https://stackoverflow.com/a/49161716/9418360

SQLite3 имеет встроенный интерфейс для шифрования. Вам необходимо включить его в config.m4: -DSQLITE_HAS_CODEC = 1 Я разработал свое собственное шифрование на основе AES. Несколько файлов C в / ext / sqlite3 / libsqlite, и это прекрасно работает. Весь файл базы данных зашифрован, нет необходимости отправлять зашифрованные данные из PHP. Как только у меня будет готов код для публикации, я обновлю этот пост. Приветствия.

...