Обучение/Помощь новичкам | Два одинаковых хэша
Тема закрыта by
SNEG
Могут быть два одинаковых хэша если использовать time()
$str = bin2hex(random_bytes(11)).time();
$str_hash = sha256($str);
________
посл. ред. 26.07.2023 в 05:51; всего 2 раз(а); by SNEG
$str = bin2hex(random_bytes(11)).time();
$str_hash = sha256($str);
________
посл. ред. 26.07.2023 в 05:51; всего 2 раз(а); by SNEG
Чисто теоретически возможно повторение)
Но с random_bytes вероятность одна на миллионы
Для таких целей лучше использовать unicid там используется время в микросекундах и повторений не случится
________
посл. ред. 26.07.2023 в 06:48; всего 1 раз(а); by ddarder
Но с random_bytes вероятность одна на миллионы
Для таких целей лучше использовать unicid там используется время в микросекундах и повторений не случится
________
посл. ред. 26.07.2023 в 06:48; всего 1 раз(а); by ddarder
php
<?php
function generateUniqueHash($length = 16)
{
// Генерируем случайную строку с более высокой энтропией с помощью random_bytes
$random_string = bin2hex(random_bytes($length));
// Генерируем случайную метку времени с помощью random_int
$timestamp = random_int(0, time());
// Объединяем случайную строку и метку времени
$str = $random_string . $timestamp;
// Получаем хеш для объединенной строки с использованием алгоритма SHA-256 (или другого выбранного алгоритма)
$str_hash = hash('sha256', $str);
return $str_hash;
}
// Пример использования:
$hash = generateUniqueHash(16);
echo "Сгенерированный хеш: $hash";
?>Чисто теоретически возможно повторение)
Но с random_bytes вероятность одна на миллионы
Для таких целей лучше использовать unicid там используется время в микросекундах и повторений не случится
echo md5($test);
С таким вариком 2 одинаковых не может быть ?
?
________
посл. ред. 26.07.2023 в 17:43; всего 7 раз(а); by SNEG
$test = uniqid('', true);
echo md5($test);
С таким вариком 2 одинаковых не может быть ?
?
uniqid() в данном вопросе неуместна
p.s. хотя я лично использую uniqid() для авторизации но в паре с айдишником пользуна
php
// регистрация (авторизация)
$user = new User();
$user->token = uniqid();
$user->save();
$_SESSION['auth'] = [$user->id, $user->token];
// контроль авторизованного
if (isset($_SESSION['auth'])) {
if ($user = User::findOneBy('`id` = ? && `token` = ?', $_SESSION['auth'])) {
return $user;
}
unset($_SESSION['auth']);
// return false;
}
// return false;________
посл. ред. 26.07.2023 в 18:48; всего 5 раз(а); by Вилы Выкидные