Richtige Verwendung von crypt () mit SHA512 in PHP

Alle Online-Beispiele zeigen die Verwendung von Krypta wie folgt:

$pass = crypt('something','Ich habe einige davon für nützlich befunden:rounds=5000$anexamplestringforsalt

Aber jeder sagt, dass man weder die Runden noch das Salz definieren soll.

Wie soll ich es verwenden?

Außerdem habe ich ein Problem: Wenn ich den obigen Code ausführe, werden nur 50 Runden statt 5000 Runden ausgeführt, als würde das System ihn anhalten.

Jede Hilfe wird sehr geschätzt.

// - Lösung - //

Ich habe einige davon für nützlich befunden:

Zur Salzgewinnung:

 $salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345‌​6789"), 0, 8); 

oder

Wenn Sie einen Linux-Server haben, ist dies eine viel zufälligere Methode, um Salz zu erzeugen

$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);

Base 64-Codierung, um sicherzustellen, dass einige Zeichen keine Probleme bei der Verschlüsselung verursachen

$salt = base64_encode($randomString);

Zum Hashing:

$hashed = crypt($passwordInput, 'Ich habe einige davon für nützlich befunden:'.$salt);

Bestätigen:

if (crypt($passwordInput, $hashed) == $hashed) { 
  // Valid action
} else { 
  // Invalid action
}

** Besonderer Dank an @Lathspell für Hilfe bei der oben genannten Lösung **

);

Aber jeder sagt, dass man weder die Runden noch das Salz definieren soll.

Wie soll ich es verwenden?

Außerdem habe ich ein Problem: Wenn ich den obigen Code ausführe, werden nur 50 Runden statt 5000 Runden ausgeführt, als würde das System ihn anhalten.

Jede Hilfe wird sehr geschätzt.

// - Lösung - //

Ich habe einige davon für nützlich befunden:

Zur Salzgewinnung:

 $salt = substr(str_shuffle("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345‌​6789"), 0, 8); 

oder

Wenn Sie einen Linux-Server haben, ist dies eine viel zufälligere Methode, um Salz zu erzeugen

$fp = fopen('/dev/urandom', 'r');
$randomString = fread($fp, 32);
fclose($fp);

Base 64-Codierung, um sicherzustellen, dass einige Zeichen keine Probleme bei der Verschlüsselung verursachen

$salt = base64_encode($randomString);

Zum Hashing:

$hashed = crypt($passwordInput, 'Ich habe einige davon für nützlich befunden:'.$salt);

Bestätigen:

if (crypt($passwordInput, $hashed) == $hashed) { 
  // Valid action
} else { 
  // Invalid action
}

** Besonderer Dank an @Lathspell für Hilfe bei der oben genannten Lösung **

Antworten auf die Frage(2)

Ihre Antwort auf die Frage