Я использую сервер ProFTPD с серверной частью MySQL для аутентификации пользователей.
Пароли для пользователей в настоящее время представлены в виде открытого текста. И моя цель состоит в том, чтобы у всех пользователей были зашифрованные пароли, хранящиеся в базе данных.
Я знаю, что когда я хочу зашифровать один пароль от одного пользователя, я могу ввести команду SQL:
update users set password= md5('MyPassword') where password="myPassword";
Но как я могу зашифровать все пароли от всех пользователей?
Я надеюсь, что кто-нибудь может мне помочь.
update users set password= md5('MyPassword') where password="myPassword";
Использование MD5 в качестве хеша небезопасно. MD5 устарел
Безопасные алгоритмы хеширования - это PBKDF2, bcrypt, scrypt и т. Д. И, кроме того, все алгоритмы хеширования должны использоваться с солью. @Gerald Schneider опубликовал очень хорошую ссылку на эту тему: https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords
Проблема здесь в том, что ни один из этих алгоритмов сохранения хешей не реализован в mysql. Есть режим аутентификации для PBKDF2 в ProFTPD в модуле mod sql. Но OOTB не может создать хешированный пароль PBKDF2 или пароль, который хешируется другим безопасным алгоритмом в базе данных mysql.
Возможное решение - создать HTML-страницу с помощью PHP. В PHP есть функции, реализованные по умолчанию, для создания безопасных хешированных паролей.
Я спросил на форуме ProFTPD, знает ли кто другой, может быть, лучший ответ на проблему: https://forums.proftpd.org/smf/index.php/topic,12110.0.html
Да, я знаю, что исходный вопрос заключался в том, как можно хешировать все пароли в моей базе данных одновременно с помощью одной команды. Но я думаю, что сначала мне следует поискать безопасный алгоритм хеширования.