Шифрование базы данных 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, эти два файла нужно будет скопировать в папку с проектом. Как эти библиотеки использовать мы рассмотрим в следующей статье. Скачать полученную библиотеку можно по ссылке ниже. |