Обучение/Помощь новичкам | Два одинаковых хэша
Тема закрыта 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 одинаковых не может быть ?
?
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 Вилы Выкидные