Maison  >  Article  >  développement back-end  >  Cryptage PHP : API de hachage de mot de passe

Cryptage PHP : API de hachage de mot de passe

藏色散人
藏色散人avant
2020-03-02 14:18:084513parcourir

Après PHP 5.5, l'API de hachage de mot de passe a été introduite pour créer et vérifier les mots de passe hachés. Elle est fournie avec le noyau et ne nécessite aucune installation ni configuration d'extension. Il fournit principalement quatre fonctions à utiliser :

● password_hash() : créer un hachage du mot de passe

● password_verify() : vérifier si le mot de passe correspond au hachage

● password_needs_rehash() : vérifie si le hachage donné correspond à l'option donnée ;

● password_get_info() : renvoie des informations pertinentes sur le hachage spécifié ;

1. password_hash(string password, int algo [, array options])

Utilisez un algorithme de hachage unidirectionnel suffisamment puissant pour générer un hachage du mot de passe. Cette fonction est compatible avec crypt(), c'est-à-dire que la valeur de hachage générée par crypt() peut être vérifiée à l'aide des fonctions associées de l'API de hachage de mot de passe.

● mot de passe : mot de passe de l'utilisateur.

● algo : constante de l'algorithme cryptographique. Les valeurs incluent :

● PASSWORD_DEFAULT : utilisez l'algorithme bcrypt. Le résultat final généré peut dépasser 60 caractères ;

● PASSWORD_BCRYPT : utilisez l'algorithme CRYPT_BLOWFISH pour créer le hachage. Le résultat final est une chaîne de 60 caractères, ou FALSE en cas d'échec.

● salt : fournissez manuellement la valeur salt pour les mots de passe hachés. En cas d'omission, la fonction génère automatiquement une valeur de sel aléatoire pour chaque hachage de mot de passe. Cet élément a été abandonné en PHP 7.0 ;

● coût : représente le coût utilisé par l'algorithme. La valeur par défaut est 10, qui peut être augmentée en fonction des conditions réelles.

2. password_verify(string password, string hash)

● mot de passe : Mot de passe fourni par l'utilisateur.

Quantity hash : valeur de hachage créée par password_hash(). Renvoie VRAI s'il y a une correspondance, FAUX sinon. Les attaques chronométrées ne fonctionnent pas sur cette fonction.

3, password_needs_rehash(string hash, integer algo [, array opitons])

weight hash : le hachage généré par password_hash();

weight algo : constantes de l'algorithme cryptographique

Quantity options : Un tableau associatif contenant les options pertinentes.

4, password_get_info(string hash) hash : Hachage généré par password_hash(). Renvoie un tableau associatif contenant trois éléments :

● algo : constante de l'algorithme cryptographique

● algoName :

● options : fournies lors de l'appel des options password_hash() ;

Exemple

$str = 'chicken,run!';
$pwd1 = password_hash($str, PASSWORD_BCRYPT);
$pwd2 = crypt($str);

var_dump(password_verify('chicken,run!', $pwd1));    // 输出 true
var_dump(password_verify('chicken,ran!', $pwd1));    // 输出 false
var_dump(password_verify($str, $pwd2));    // 输出 true
var_dump(password_needs_rehash($pwd1, PASSWORD_BCRYPT, ['cost'=>10]));   // 输出 false,因为 password_hash() 在加密时,出来默认 cost 为 10 外,还会指定随机的盐值

Pour plus de contenu lié à la programmation, veuillez faire attention à la colonne Introduction à la programmation sur le site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer