Запрос зашифрованных данных в SQLite - PullRequest
0 голосов
/ 11 мая 2018

Я хочу запросить зашифрованные данные из моей базы данных SQLite.

Для каждой строки я использую операцию XOR для каждого значения, преобразовываю ее в Base64 и затем вставляю в базу данных.

Теперь мне нужно найти способ ВЫБРАТЬ зашифрованные значения.

то есть:

SELECT *
FROM table
WHERE name_column BETWEEN 'value1' AND 'value2'

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

1 Ответ

0 голосов
/ 11 мая 2018

Это невозможно. Вы используете BETWEEN 'value1' AND 'value2'. База данных может видеть только строки XORed, и BETWEEN не будет работать должным образом. Даже если вы найдете способ расшифровать строки на лету с помощью SQLITE (помните, что вызов XOR снова расшифрует), это не очень эффективно и требует много ресурсов, когда есть тысячи записей.

Таким образом, чтобы продолжить решение вашей проблемы, вы можете взглянуть на этот список расширений. Кажется, что SQLITE предоставляет некоторые очень простые модули шифрования, которые могут XOR всей базы данных с указанным вами ключом. (не рекомендуется)

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

Этот файл содержит полный исходный код варианта SEE, который делает слабое шифрование XOR. Не принимайте этот файл всерьез. Это для только в демонстрационных целях. XOR-шифрование настолько слабое, что вряд ли квалифицируется как «шифрование».

Способ, которым вы хотите это сделать, не сработает, если вы не прочитаете все значения столбца в своей программе Qt, расшифруете их и проверьте, является ли VALUE X между A и B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...