Каков наилучший способ шифрования данных без использования ресурса сервера MySQL? Является ли mcrypt с режимом CFB лучшим способом с php? - PullRequest
0 голосов
/ 15 января 2019

У меня огромная база данных с незашифрованными полями.

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

Первый метод :

Если я использую aes_encrypt, чтобы создать новое поле и вставить в него зашифрованные данные, как показано ниже:

INSERT INTO myTable(name_en, name_es, phone)
VALUES(aes_encrypt(name_en, :key), aes_encrypt(name_es, :key), aes_encrypt(phone, :key))

И после этого каждый запрос на вставку должен использовать aes_encrypt(), он будет находчивым для сервера.

Второй метод :

Используйте библиотеку libsodium, которая является отличным решением для новых данных. Но существующие данные останутся такими же, как libsodium не может быть использован внутри MySQL Query .

Третий метод :

Использование mcrypt_encrypt с MCRYPT_RIJNDAEL_128 в качестве эквивалента aes_encrypt, а затем вставка зашифрованной переменной в запрос, не позволяя MySQL выполнять часть шифрования, что уменьшит нагрузки и время обработки.

Но mcrypt_encrypt больше не является безопасным , особенно в режиме ECB.

Каков наилучший метод - зашифровать несколько полей в существующей базе данных MySQL и, конечно же, новую? И если я использовал mcrypt с режимом CFB, можно ли впоследствии использовать aes_decrypt для проверки данных?

...