Loading...
Обучение/Помощь новичкам | Два одинаковых хэша
Могут быть два одинаковых хэша если использовать time()
$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
SNEG , пробуй так.smoke_sm.
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";
?>
ddarder (26 июля 2023, в 6:45)
Чисто теоретически возможно повторение)
Но с random_bytes вероятность одна на миллионы

Для таких целей лучше использовать unicid там используется время в микросекундах и повторений не случится
$test = uniqid('', true);
echo md5($test);
С таким вариком 2 одинаковых не может быть ?
?
________
посл. ред. 26.07.2023 в 17:43; всего 7 раз(а); by SNEG
SNEG (26 июля 2023, в 13:40)
$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 Вилы Выкидные
Онлайн: 2
Время:
Gen. 0.103
(c) Bym.Guru 2010-2025