Я обновляю веб-систему для клиента, и в его таблице «учетные записи» более 20 000 пользователей, у каждого из которых есть поле пароля в виде простого текста, что означает, что ни один из паролей не зашифрован. (Я знаю, страшно!) В любом случае, мне нужно знать, как взять ВСЕ эти пароли и легко зашифровать их, желательно в пакетном стиле, и импортировать их обратно в БД. В поиске многого не нашел. Я видел B-Crypt, но похоже, что он используется в основном для файлов. Я довольно новичок в этом, поэтому ЛЮБЫЕ предложения будут очень признательны! Спасибо. :)
Как выполнить пакетное шифрование существующих паролей в базе данных MySQL?
Ответы (2)
Вот один из способов сделать это.
UPDATE table_Users
SET password = EncryptionFunctionYouChoose(password);
РЕДАКТИРОВАТЬ, где «table_Users» — это таблица, в которой хранится ваш пароль, а «password» — это имя столбца для пароля. КОНЕЦ РЕДАКТИРОВАТЬ
Хотя лучше было бы хешировать каждый пароль с индивидуальным значением соли, а не шифровать. (мое мнение)
person
Bueller
schedule
18.07.2011
Насколько я знаю, MySQL не предоставляет встроенной функции B-CRYPT. Ссылка. Если вы просто хотите решить эту проблему с помощью запросов MySQL, вы можете сделать что-то вроде
update users set password = SHA2(password, 256);
Но если вам нравится BCrypt, я думаю, вам придется делать это на уровне приложения.
Всегда есть интересные дискуссии о хранении пароля в базе данных. См. этот список.
person
Nishant
schedule
18.07.2011