Longueur maximale de hachage généré lors de l'utilisation de password_hash?
Je suis en utilisant
password_hash($password, PASSWORD_BCRYPT);
pour crypte le mot de passe pour stocker dans une base de données. Comme je l'ai lu, il n'y a pas de limite de longueur sur générés de tables de hachage, mais j'ai besoin de mettre une limite pour créer un champ de ma base de données pourrait s'adapter à tous les mot de passe (dans le pire des cas).
Si j'ai mis une limite de 20 caractères pour le mot de passe en texte clair, comment password_hahs() résultat sera long?
- La recommandation est de créer un
VARCHAR(255)
.... password_hash crée actuellement un 60 caractères que vous avez besoin de stocker, mais qui est susceptible de changer dans le futur si le sous-jacent changements d'algorithme. Hachage longueur est totalement épargnée par la longueur du mot de passe, mais pourquoi se limiter mots de passe de 20 caractères? - Voir aussi Openwall de la PHP cadre de hachage de mot de passe (PHPass). Son portable et trempé à l'encontre d'un certain nombre d'attaques sur les mots de passe utilisateur.
Vous devez vous connecter pour publier un commentaire.
De la
password_hash
de la documentation:Par conséquent, l'utilisation
PASSWORD_BCRYPT
, le résultat depassword_hash
sera de 60 chaîne de caractères.Le résultat de BCrypt sera toujours un 60 chaîne de caractères. Sans limites est seulement l'entrée de la fonction, cela signifie que vous n'avez pas (et ne doit pas) fixer une limite à la saisie des mots de passe.
Fait BCrypt utilise en interne seulement environ 72 caractères, mais il accepte les mots de passe de n'importe quelle longueur.
Si vous souhaitez utiliser la fonction dans son avenir formulaire comme ceci (notez le PASSWORD_DEFAULT)...
...alors vous devriez faire de votre champ de base de données de plus grand. De plus nouvelles versions de PHP peut remplacer BCrypt avec un autre algorithme de hachage par défaut, ce qui peut générer de plus les tables de hachage.