У меня огромная база данных с незашифрованными полями.
Эти данные являются конфиденциальными, и менеджеры приняли решение зашифровать их как можно скорее. И все новые данные должны быть автоматически зашифрованы таким же образом.
Первый метод :
Если я использую 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 для проверки данных?