Topic: Выборочное шифрование данных в MySQL

Есть необходимость шифровать на уровне приложения некоторые данные, записываемые в БД MySQL.
Это названия контрагентов, их контактные данные, отпускные цены, файл коммерческого предложения.
Цель - защитить базу данных от попадания третьим лицам, чтобы они не смогли прочитать данные, не имея моего приложения.
Шифрование на уровне MySQL не подходит.
Вопрос - есть ли какой-нибудь способ реализовать это?
Как привязать шифровку/дешифровку к некоторым элементам форм и некоторым столбцам таблиц?

Re: Выборочное шифрование данных в MySQL

.

Post's attachments

Attachment icon EncryptRC5__DecryptRC.7z 814.67 kb, 245 downloads since 2020-05-22 

3 (edited by mikhail_a 2020-05-24 11:48:10)

Re: Выборочное шифрование данных в MySQL

Задача решена:
в одном из постов английской версии форума 2017 года нашел скрипт кодирования данных посимвольным методом.
Немного изменил его для получения шифрования/дешифрования алгоритмом RC5.
Теперь в полях формы и таблицах данные отображаются в нормальном виде, а в базе данных - в зашифрованном.
Т.е. подключение к базе данных вне разработанного мной приложения не позволяет понять, что в ней хранится.
Ключевое слово планируется менять периодически.
При смене ключа, конечно, надо запускать скрипт раскодировки данных старым ключом и кодировки новым.
Но, это уже совсем просто.
...
Но, есть два "но".
Скрипт работает с полями базы данных  только текстового типа.
Шифрование по определению производится в символы шестнадцатеричной системы исчисления.
И если в БД тип поля указан как "Целое число" или "Деньги", то запись в БД приводит к ошибке.

Второе - не работает поиск по зашифрованным полям.

Post's attachments

Attachment icon Encrypt DB fields.rar 388.5 kb, 224 downloads since 2020-05-23 

Re: Выборочное шифрование данных в MySQL

Поиск по зашифрованным полям базы данных можно в ряде случаев решить за счет организации поиска не в самой базе, а визуальной фильтрацией строк в TableGrid, в которую были загружены расшифрованные данные.
См. пост http://myvisualdatabase.com/forum/viewtopic.php?id=6310