Comment générer un sel long et aléatoire pour le hachage?
Ce qui est un moyen en PHP de manière aléatoire, de longueur variable de sel pour une utilisation dans le hachage? Disons que je veux faire une de 16 caractères de long sel - comment aurais-je le faire?
source d'informationauteur sepiroth
Vous devez vous connecter pour publier un commentaire.
edit: l'extension mcrypt a été désapprouvée.
Pour les nouveaux projets regardez
random_bytes ( int $length )
et le de sodium (comme php 7.2 core)de l'extension.
Si le extension mcrypt est disponible, vous pouvez simplement utiliser mcrypt_create_iv(taille, source) pour créer un sel.
Depuis chaque octet de la "chaîne" peut être dans la plage comprise entre 0 et 255 vous avez besoin d'un binaire fonction de sécurité pour sauvegarder/récupérer.
selon votre système d'exploitation, quelque chose comme:
Faire lire sur le comportement de l'aléatoire et de urandom.
Tandis que d'autres ont souligné à juste titre qu'il y a certains problèmes avec md5 et répété le hachage de mots de passe (c'est à dire relativement courtes chaînes de caractères) les attaques par force brute de prendre la même quantité de temps quel que soit le degré de sophistication de l'algorithme de hachage est.
C.
Ici est j'ai trouvé une fonction pour générer de la chaîne aléatoire:
Il y a deux conditions préalables à un bon sel: Il doit être long, et il doit être aléatoire. Il y a beaucoup de façons de le faire. Vous pouvez utiliser une combinaison de
microtime
etrand
par exemple, mais vous pouvez aller encore plus d'efforts pour s'assurer que votre sel est unique.Bien que la probabilité d'une collision est négligeable, gardez à l'esprit que le hachage de votre sel avec MD5 ou autre collision sujettes à des algorithmes permettra de réduire les chances que votre sel est unique pour aucune raison.
EDIT: Remplacer
rand()
pourmt_rand()
. Michael l'a noté, c'est mieux querand
.