Как правильно шифровать данные с паролем в MySQL? MD5

Знаю, что в бд хранятся пароли, зашифрованные с помощью MD5. Можно ли установить эту функцию колонке таблицы( то есть при INSERT INTO table (password) VALUES ('123') в таблице автоматически будет записано хэшированное значение)? Если да, то как это сделать? Или при вставке данных необходимо каждый раз использовать хэш-функцию?


Ответы (1 шт):

Автор решения: Сергей Коновалов

INSERT INTO table (password) VALUES (MD5('123')) - самое оптимальное.

Автоматически можно через триггер, но ИМХО я бы сказал, что это слишком сложно для подобного случая.

CREATE TRIGGER `db_table_password` BEFORE INSERT ON `db`.`table`
  FOR EACH ROW
   BEGIN
      SET NEW.password = md5(NEW.password );
   END

И лучше юзать SHA2, он безопасней https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#function_sha2

→ Ссылка