С# Определить, зашифрован ли файл базы данных SQLite паролем

Да, я знаю, что можно попытаться подключиться к базе данных SQLite, а затем использовать try-catch, если требуется пароль. Это не чистый код. Я ищу более разумный способ определить, зашифрован ли файл .sqlite, прежде чем пытаться подключиться к нему. Я использую dll System.Data.sqlite для этого проекта.


person LeChosenOne    schedule 11.01.2016    source источник


Ответы (2)


Вам нужно будет проверить сам файл основной базы данных SQLite.

Выдержка из Формат файла базы данных SQLite:

1.2.4. Количество зарезервированных байтов на странице

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

person Black Frog    schedule 11.01.2016
comment
Есть ли пример, который вы могли бы привести? - person LeChosenOne; 11.01.2016
comment
У меня нет примера, потому что я не использую SQLite в своей повседневной работе, особенно с шифрованием. Я просто предложил решение, основанное на документации, которую я нашел. - person Black Frog; 11.01.2016

Единственный вариант - попытаться поймать. Поскольку весь файл базы данных зашифрован, включая метаданные, конкретный бит, который вы можете протестировать. Но я считаю, что try-catch подходит для обработки неправильного или отсутствующего пароля.

person Ed Power    schedule 03.06.2016