Poprawne użycie crypt () z SHA512 w PHP
Wszystkie przykłady online pokazują użycie krypty w następujący sposób:
$pass = crypt('something','Odkryłem, że niektóre z nich są przydatne:rounds=5000$anexamplestringforsaltAle wszyscy mówią, że nie należy definiować rund ani soli.
Jak więc z niego korzystać?
Mam też problem: kiedy uruchamiam powyższy kod, uruchamia on tylko 50 rund zamiast 5000 rund, tak jakby system go zatrzymywał.
Każda pomoc zostanie bardzo doceniona.
//- Rozwiązanie -//
Odkryłem, że niektóre z nich są przydatne:
Do generowania soli:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
lub
jeśli masz serwer linux, jest to znacznie bardziej przypadkowy sposób generowania soli
$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);
Kodowanie 64 w celu zapewnienia, że niektóre znaki nie będą powodować problemów z kryptą
$salt = base64_encode($randomString);
Do haszowania:
$hashed = crypt($passwordInput, 'Odkryłem, że niektóre z nich są przydatne:'.$salt);
Potwierdzać:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Specjalne podziękowania dla @lathspell o pomoc w dotarciu do powyższego rozwiązania **
);
Ale wszyscy mówią, że nie należy definiować rund ani soli.
Jak więc z niego korzystać?
Mam też problem: kiedy uruchamiam powyższy kod, uruchamia on tylko 50 rund zamiast 5000 rund, tak jakby system go zatrzymywał.
Każda pomoc zostanie bardzo doceniona.
//- Rozwiązanie -//
Odkryłem, że niektóre z nich są przydatne:
Do generowania soli:
$salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
lub
jeśli masz serwer linux, jest to znacznie bardziej przypadkowy sposób generowania soli
$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);
Kodowanie 64 w celu zapewnienia, że niektóre znaki nie będą powodować problemów z kryptą
$salt = base64_encode($randomString);
Do haszowania:
$hashed = crypt($passwordInput, 'Odkryłem, że niektóre z nich są przydatne:'.$salt);
Potwierdzać:
if (crypt($passwordInput, $hashed) == $hashed) {
// Valid action
} else {
// Invalid action
}
** Specjalne podziękowania dla @lathspell o pomoc w dotarciu do powyższego rozwiązania **