Вы должны использовать эти функции PHP, которые я написал для выполнения фактической хэшировании:
Код:
// соленая SHA-256 с 7500 патронов
DEFINE ( 'CRYPT_PARAMS', '$ 5 $ раундов = 7500 $');
// получить $ байт байт защищенных случайных двоичных данных
Функция urandom ($ байт)
{
$ File = Еореп ( '/ DEV / urandom', 'гь');
$ Результат = Fread ($ файла, $ байт);
fclose ($ файла);
если (STRLEN ($ результат) < $ Байт)
умереть ( «urandom байт длины рассогласование»);
вернуть $ результат;
}
// хэш и соль нового пароля для вставки в базу данных
Функция новый_пароль ($ проход)
{
вернуться криптой ($ пропуска, CRYPT_PARAMS base64_encode (urandom (12)) '$'..);
}
// сравнить предоставленный пароль с хэш в базе данных
Функция password_is_valid ($ entered_password, $ db_hash)
{
вернуться криптой ($ entered_password, $ db_hash) === $ db_hash;
}
// старый пароль сравнения:
// sha1 (strtolower ($ пользователю). $ Entered_password) == $ db_hash
// новое сравнение пароль:
// password_is_valid ($ entered_password, $ db_hash)
DEFINE ( 'CRYPT_PARAMS', '$ 5 $ раундов = 7500 $');
// получить $ байт байт защищенных случайных двоичных данных
Функция urandom ($ байт)
{
$ File = Еореп ( '/ DEV / urandom', 'гь');
$ Результат = Fread ($ файла, $ байт);
fclose ($ файла);
если (STRLEN ($ результат) < $ Байт)
умереть ( «urandom байт длины рассогласование»);
вернуть $ результат;
}
// хэш и соль нового пароля для вставки в базу данных
Функция новый_пароль ($ проход)
{
вернуться криптой ($ пропуска, CRYPT_PARAMS base64_encode (urandom (12)) '$'..);
}
// сравнить предоставленный пароль с хэш в базе данных
Функция password_is_valid ($ entered_password, $ db_hash)
{
вернуться криптой ($ entered_password, $ db_hash) === $ db_hash;
}
// старый пароль сравнения:
// sha1 (strtolower ($ пользователю). $ Entered_password) == $ db_hash
// новое сравнение пароль:
// password_is_valid ($ entered_password, $ db_hash)
Вы должны сделать это:
- В LogInOut.php, обновить SMF SHA-1 хеши к этим новым хэшей автоматически. Кроме того, обновлять какие-либо пароли, которые проходят password_is_valid (), но имеют другой префикс CRYPT_PARAMS, чем используется в настоящее время.
- Измените все старые сравнения паролей к новому методу.
- Там, где пароли обновляются, используйте новый_пароль () вместо метода РВСН.
- Тщательно проверить все аспекты этой модификации. Я в основном платить кому-то, чтобы сделать это изменение, а не делать это сам, потому что ошибки в это создало бы огромный беспорядок, и поэтому я хочу, кто-то более опытный в тестировании программного обеспечения, чтобы сделать это.
Подсказка: SMF имеет "поваренная соль" столбец в базе данных и "passwordSalt" переменный, но они на самом деле не используются для хэширования паролей. Вам нужно всего лишь иметь дело с "ПАРОЛЬ" колонка / переменная.
PM мне или пост здесь, если вы заинтересованы. Я буду выбирать лучший кандидат в течение недели или два. Вы должны применяться только тогда, когда вы уже достаточно хорошо доверенными в обществе.
(Не оставлять в этой теме о том, как вы предпочитаете другой метод хэширования.)