Недавно у меня появилась задача использования простой базы данных, не требующей никакой установки и при этом чтобы поддерживала sql, а кроме того еще и была зашифрована, чтобы в случае попадания базы в чужие руки ее было не так то просто открыть. Поискав в интернете я обнаружил, что решение было очень простым.
Как оказалось, библиотека System.Data.SQLite.dll (ADO.NET provider для SQLite), которую я скачал с официального сайта System.Data.SQLite и использую для работы с базой в C#, уже содержит две очень полезных функции для шифрования sqlite3_key и sqlite3_rekey, воспользоваться которыми можно просто установив sql-запросом переменные PRAGMA так:
PRAGMA rekey = 'my-encryption-key' - для того, чтобы зашифровать уже умеющуюся открытую базу данных новым паролем. Если база не была ранее зашифрована, она зашифровывается. Если она уже была зашифрована, тогда происходит перешифрация базы с новым паролем.
PRAGMA key = 'my-encryption-key' - чтобы работать с зашифрованной базой с текущим паролем.
Можно изначально установить ключ шифрования перед созданием базы и она будет сразу зашифрована.
Если вы хотите поменять пароль доступа с помощью PRAGMA rekey уже зашифрованной базы, сначала необходимо будет выполнить PRAGMA key с текущим паролем, а затем уже использовать rekey.
Конечно, этот способ не дает 100% защиту от высококлассных хакеров, но по-крайней мере, данные уже будут не в открытом виде, а будут защищены от обычных пользователей и хакеров-новичков, а при достаточно длинном и сложном пароле расшифровать базу будет уже очень не просто.
Комментарии к статье:
Добавить комментарий: