Pull to refresh

Comments 5

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

Так намного сложнее будет, а некоторые метаданные все-равно будут видны.

А раз так, то пароль просто может ввести администратор через веб-интерфейс сразу после запуска AsmBB.

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

Если сервисы много и они часто падают, ну или просто сервисы это короткоживущие процессы, которые каждый раз открывают БД, то да это единственное правильное решение.

Большое вам спасибо за статью! Попробовал реализовать сначала в отдельном проекте под Qt 4.8.1 - все заработало. И потом как оказалось в исходники Qt 4.8.1 все можно интегрировать без проблем. А именно получается так:

Для этого надо файлы:
sqlite3.c,
sqlite3.h,
rekeyvacuum.c,
shell.c,
crypto.c
перенести в каталог исходников Qt (у нас 4.8.1 D:\QtSDK1.2.1\QtSources\4.8.1\src\3rdparty\sqlite).

Пересобирать достаточно ветки исходников plugins\sqldrivers\sqlite и наверное sql.

Далее суть в том, что все делаем как обычно в Qt: открывает файл базы данных
и достаточно вызвать первый раз
pragma rekey='%123456%'"
и база данных зашифруется

а потом каждый раз при открытии делаем уже:
pragma rekey='%123456%'"

И никаких больше изменений и не надо в Qt делать! Вот это удача. На все про все 1 день.

Sign up to leave a comment.

Articles