Maison >développement back-end >tutoriel php >PHP implémente le cryptage des mots de passe

PHP implémente le cryptage des mots de passe

小云云
小云云original
2018-05-15 16:32:354443parcourir

Cet article partage principalement avec vous des exemples sur la façon d'implémenter le cryptage des mots de passe en PHP. En raison de l'algorithme de hachage rapide, il n'est pas recommandé d'utiliser la fonction md5 pour obtenir des mots de passe. génère suffisamment de valeur de sel forte et prendra automatiquement les tours appropriés. password_hash() est un simple wrapper autour de crypt() et est entièrement compatible avec les hachages de mots de passe existants. Il est donc recommandé d'utiliser password_hash().

Créer un hachage du mot de passe

string password_hash ( string $password , integer $algo [, array $options ] )

Vérifier si le mot de passe correspond au hachage

boolean password_verify ( string $password , string $hash )

Exemple :

<?php$hash = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
if (password_verify(&#39;rasmuslerdorf&#39;, $hash)) {    
echo &#39;Password is valid!&#39;;
} else {    
echo &#39;Invalid password.&#39;;
}

Conseils d'utilisation :

Ne définissez pas vous-même la valeur du sel lors de la création d'un mot de passe

Raison : Il est fortement recommandé de ne pas générer vous-même la valeur du sel (salt) pour cette fonction. Tant qu'il n'est pas réglé, il créera automatiquement une valeur de sel sûre. Comme mentionné ci-dessus, fournir l'option salt dans PHP 7.0 entraîne un avertissement de dépréciation. La possibilité de fournir manuellement des valeurs de sel pourrait être supprimée dans les futures versions de PHP.

Effectuez des tests de référence sur votre propre serveur et ajustez le paramètre de coût jusqu'à ce que la surcharge de temps de fonction soit inférieure à 100 millisecondes (millisecondes).

Exemple :

<?php/**
 * 这个例子对服务器做了基准测试(benchmark),检测服务器能承受多高的 cost
 * 在不明显拖慢服务器的情况下可以设置最高的值
 * 8-10 是个不错的底线,在服务器够快的情况下,越高越好。
 * 以下代码目标为  ≤ 100 毫秒(milliseconds),
 * 适合系统处理交互登录。
 */$timeTarget = 0.1; // 100 毫秒(milliseconds) 
 $cost = 8;do {    
 $cost++;    
 $start = microtime(true);
    password_hash("test", PASSWORD_BCRYPT, ["cost" => $cost]);    
    $end = microtime(true);
} while (($end - $start) < $timeTarget);
echo "Appropriate Cost Found: " . $cost;

Résultat :

Appropriate Cost Found: 10

Recommandations associées :

analyse de l'algorithme de cryptage du mot de passe utilisateur php

Plusieurs méthodes de cryptage de mot de passe dans les exemples PHP_php

Le cryptage de mot de passe PHP est lent

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn