Как выполнить пакетное шифрование существующих паролей в базе данных MySQL?

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


person Brady    schedule 18.07.2011    source источник


Ответы (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