Correctement à l'aide de crypt() avec SHA512 en PHP

Tous les exemples en ligne montrent que l'utilisation de la crypte comme ceci:

$pass = crypt('something','$6$rounds=5000$anexamplestringforsalt$');

Mais tout le monde dit que vous n'êtes pas censé définir les tours ou le sel.

Alors, comment dois-je l'utiliser?

Aussi j'ai un problème: lorsque j'exécute le code ci-dessus, il ne fonctionne que 50 tours au lieu de 5000 tours comme si le système est en cours d'arrêt.

Toute aide sera grandement appréciée.

//- Solution -//

J'ai trouvé certains de ces être utile:

Pour la génération de Sel:

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

ou

si vous avez un serveur linux, c'est beaucoup plus aléatoire façon de générer de sel

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

Base 64 codent pour s'assurer que certains caractères ne seront pas causer des problèmes pour la crypte

$salt = base64_encode($randomString);

Pour Le Hachage:

$hashed = crypt($passwordInput, '$6$'.$salt);

À Confirmer:

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

** Un Merci spécial à @lathspell pour les aider à arriver à la solution ci-dessus **

Centres d'intérêt: comment allez-vous déterminer le nombre de tours qu'il fait réellement?
Parce que la sortie s'affiche: $6$tours=50$ob0t0FFYzA4Az0FlWjjOaXzflUuCfQn8qkra75jrgoielmy35zlvf7u4558sxpxonwsaumldkxpydtpvuwiws1
Probablement un bug dans certaines versions anciennes? → 3v4l.org/BplEG en Fait, selon le manuel de l'SHA-512 n'existait pas jusqu'à ce que 5.3.2...!?
Ok @deceze la suggestion qu'il pourrait être un bug est correct, j'ai vérifié sur mon pc et il s'est avéré un bond en arrière pour PHP 5.2. Je vais avoir à comprendre pourquoi plus tard. Aussi, Est-il une réponse à la question Principale? à propos de la façon dont il devrait être affiché.

OriginalL'auteur ShadowZzz | 2013-08-19