Правильно использовать crypt () с SHA512 в PHP
Все примеры онлайн показывают использование склепа следующим образом:
$pass = crypt('something','Я нашел некоторые из них полезными:rounds=5000$anexamplestringforsaltНо все говорят, что вы не должны определять раунды или соль.
Так как мне это использовать?
Также у меня возникла проблема: когда я запускаю приведенный выше код, он запускает только 50 раундов вместо 5000 раундов, как будто система его останавливает.
Любая помощь будет оценена.
//- Решение -//
$6$
Для получения соли:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
или же
если у вас есть сервер Linux, это гораздо более случайный способ генерации соли
$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);
Кодирование Base 64, чтобы некоторые символы не вызывали проблем для крипты
$salt = base64_encode($randomString);
Для хеширования:
$hashed = crypt($passwordInput, '$6Подтвердить:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Особая благодарность @lathspell за помощь в достижении вышеуказанного решения **
);
Но все говорят, что вы не должны определять раунды или соль.
Так как мне это использовать?
Также у меня возникла проблема: когда я запускаю приведенный выше код, он запускает только 50 раундов вместо 5000 раундов, как будто система его останавливает.
Любая помощь будет оценена.
//- Решение -//
$6$
Для получения соли:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
или же
если у вас есть сервер Linux, это гораздо более случайный способ генерации соли
$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);
Кодирование Base 64, чтобы некоторые символы не вызывали проблем для крипты
$salt = base64_encode($randomString);
Для хеширования:
$hashed = crypt($passwordInput, '$6$'.$salt);
Подтвердить:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Особая благодарность @lathspell за помощь в достижении вышеуказанного решения **
.$salt);
Подтвердить:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Особая благодарность @lathspell за помощь в достижении вышеуказанного решения **
);Но все говорят, что вы не должны определять раунды или соль.
Так как мне это использовать?
Также у меня возникла проблема: когда я запускаю приведенный выше код, он запускает только 50 раундов вместо 5000 раундов, как будто система его останавливает.
Любая помощь будет оценена.
//- Решение -//
$6$
Для получения соли:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
или же
если у вас есть сервер Linux, это гораздо более случайный способ генерации соли
$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);
Кодирование Base 64, чтобы некоторые символы не вызывали проблем для крипты
$salt = base64_encode($randomString);
Для хеширования:
$hashed = crypt($passwordInput, '$6$'.$salt);
Подтвердить:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Особая благодарность @lathspell за помощь в достижении вышеуказанного решения **