Шифрование базы данных SQLite с помощью SQLCipher. Программирование / Delphi.

Источник: rgblog
Руслан Гайсин

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

Цель: Собрать из исходников SQLCipher библиотеку SQLite с AES-256 шифрованием под Windows.

1) Во первых нам понадобится кросс-компилятор на основе - MinGW + MSYS.

Скачать можно с официального сайта www.mingw.org, на момент написания статьи была доступна версия от 2 августа 2011. Дистрибутив под названием mingw-get-inst-20110802.exe.

Скачиваем и устанавливаем в папку D:\MinGW\ . При установке необходимо установить галочку на пункте "MiniGW Developer Toolkit".

2) Библиотека шифрования из OpenSSL. Через поиск гугл, сразу нашел установщик под название Win32OpenSSL-0_9_8m.exe. При установке указываем, что хотим установить библиотеки в туже папку, в подпапку /bin . Устанавливаем в папку D:\OpenSSL\.

3) Скачиваем библиотеку инструментов Tcl/Tk. Я нашел версию 8.4.1-1 (сборка для MinGW). Файл называется tcltk-8.4.1-1.exe. При установке указываем путь к MiniGW, в нашем случае D:\MinGW\.

4) Находим файл D:\MinGW\bin\tclsh84.exe и переименовываем в tclsh.exe.

5) Скачиваем SQLCipher с официального сайта sqlcipher.net. Нашел у них последнюю бета-версию 1.1.8-19. После скачивания архива, разархивируем его в папку D:\SqlCipher\.

6) Запускаем MSYS, он находится по адресу D:\MinGW\msys\1.0\msys.bat.

7) Выполняем следующие команды в MSYS:

а) переход в папку SqlCipher

cd /d/SqlCipher/

б) настраиваем библиотеку

./configure --disable-tcl --disable-amalgamation CFLAGS="-DSQLITE_HAS_CODEC -I/d/OpenSSL/include /d/OpenSSL/libeay32.dll -L/d/OpenSSL/lib/MinGW" LDFLAGS="-leay32"

в) компилируем

make

г) создаем нашу dll

make dll

Теперь при создании проекта, нам понадобятся две библиотеки dll.

sqlite3.dll - находится в папке D:\SqlCipher\sqlite3.dll

libeay32.dll - находится в папке D:\OpenSSL\libeay32.dll

Теперь при создании проекта, например в Delphi, эти два файла нужно будет скопировать в папку с проектом. Как эти библиотеки использовать мы рассмотрим в следующей статье.

Скачать полученную библиотеку можно по ссылке ниже.


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=33724