J'ai longtemps utilisé du md5/sha1 non salé, mais comme cette méthode n'est pas vraiment sûre (et le devient de moins en moins avec le temps), j'ai décidé de passer à du sha512 salé. De plus, je veux ralentir la génération du hachage en utilisant de nombreuses itérations (par exemple 100).
Ma question est de savoir si je dois ajouter le sel à chaque itération ou seulement une fois au début. Voici les deux codes possibles :
Ajouter à chaque fois :
// some nice big salt
$salt = hash($algorithm, $salt);
// apply $algorithm $runs times for slowdown
while ($runs--) {
$string = hash($algorithm, $string . $salt, $raw);
}
return $string;
Ajouter une fois :
// add some nice big salt
$string .= hash($algorithm, $salt);
// apply $algorithm $runs times for slowdown
while ($runs--) {
$string = hash($algorithm, $string, $raw);
}
return $string;
Je voulais d'abord utiliser la deuxième version (append once) mais j'ai ensuite trouvé des scripts apposant le sel à chaque fois.
Je me demande donc si le fait de l'ajouter à chaque fois renforce le hachage. Par exemple, serait-il possible qu'un attaquant trouve un moyen astucieux de créer une fonction 100timesSha512 qui soit bien plus rapide que la simple exécution de sha512 100 fois ?