Как я могу пакетно зашифровать существующие пароли в базе данных MySQL? - PullRequest
4 голосов
/ 18 июля 2011

Я обновляю веб-систему для клиента, и его таблица «учетных записей» насчитывает более 20 000 пользователей, у каждого из которых есть поле пароля в виде простого текста, что означает, что ни один из паролей не зашифрован.(Я знаю, страшно!) В любом случае, мне нужно знать, как взять ВСЕ эти пароли и легко зашифровать их, предпочтительно в пакетном стиле, и импортировать их обратно в БД.Я не мог найти много в поисках.Я видел B-Crypt, но, похоже, его будут использовать в основном для файлов.Я довольно новичок в этом, поэтому любые предложения будут с благодарностью!Благодарю.:)

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

Вот один из способов сделать это.

UPDATE table_Users
SET password = EncryptionFunctionYouChoose(password);

РЕДАКТИРОВАТЬ, где «table_Users» - это таблица, где хранится ваш пароль, а «password» - это имя столбца для пароля.КОНЕЦ РЕДАКТИРОВАНИЯ

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

1 голос
/ 18 июля 2011

Насколько я знаю, MySQL не предоставляет встроенную функцию B-CRYPT. См .Если вы просто хотите решить эту проблему с помощью запросов MySQL, вы можете сделать что-то вроде

update users set password = SHA2(password, 256);

Но если вам нравится BCrypt, я думаю, вам придется делать это на уровне приложения.

Всегда есть интересные дискуссии о хранении пароля в базе данных.Смотрите этот список

...