Maison  >  Article  >  développement back-end  >  Plusieurs façons simples de générer des mots de passe aléatoires en php

Plusieurs façons simples de générer des mots de passe aléatoires en php

一个新手
一个新手original
2017-09-06 16:10:461365parcourir

L'utilisation de PHP pour développer des applications, en particulier des programmes de sites Web, nécessite souvent de générer des mots de passe aléatoires. Par exemple, un mot de passe aléatoire est généré pour l'enregistrement de l'utilisateur, et un mot de passe aléatoire est également requis pour la réinitialisation du mot de passe de l'utilisateur. Un mot de passe aléatoire est une chaîne de longueur fixe. J'ai rassemblé ici plusieurs méthodes pour générer des chaînes aléatoires pour votre référence.

Méthode 1

  1. Générer un entier aléatoire de 33 à 126, tel que 35,

  2. convertir 35 en correspondant Caractères de code ASCII, tels que 35 correspondant à #

  3. Répétez les étapes ci-dessus 1 et 2 n fois pour vous connecter avec un mot de passe à n chiffres

Instructions :

Cet algorithme utilise principalement deux fonctions. La fonction mt_rand ( int $min , int $max ) est utilisée pour générer des entiers aléatoires, où $min – $max est la plage de codes ASCII. Ici, elle est 33-126. ajusté selon les besoins, comme les codes ASCII. Le bit 97 —— 122 dans le tableau correspond à a – z et 65 —— 90 correspond à la lettre anglaise de A —— Z Pour plus de détails, veuillez vous référer au tableau des codes ASCII.

<?php
    function create_password($pw_length = 8) {
    $randpwd = &#39;&#39;;    
    for ($i = 0; $i < $pw_length; $i++) 
    {        
    $randpwd .= chr(mt_rand(33, 126));
    }    
    return $randpwd;
}// 调用该函数,传递长度参数
    $pw_length = 6echo create_password(6);

Méthode 2

  1. Prérégler une chaîne $chars, comprenant a – z,A – Z,0 – 9, et quelques caractères spéciaux

  2. Choisissez au hasard un caractère dans la chaîne $chars

  3. Répétez la deuxième étape n fois pour obtenir un mot de passe de longueur n

<?php
    function generate_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符    
    $chars = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_[]{}<>~`+=,.;:/?|&#39;;    
    $password = &#39;&#39;;
    for ( $i = 0; $i < $length; $i++ ) 
    {
        // 这里提供两种字符获取方式
        // 第一种是使用 substr 截取$chars中的任意一位字符;
        // 第二种是取字符数组 $chars 的任意元素
        // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }

    return $password;
}
    echo generate_password(6);

Méthode 3

  1. Préréglez un tableau de caractères $chars, y compris a – z,A – Z,0 – 9, et certains caractères spéciaux

  2. Utilisez array_rand() pour sélectionner au hasard $chars éléments $length

  3. du tableau

    selon le tableau de noms de clé obtenu $keys, et retirez les caractères d'épissage de caractères du tableau $chars chaîne. L’inconvénient de cette méthode est que les mêmes caractères ne seront pas récupérés de manière répétée.

<?php
    function make_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符
    $chars = array(&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, 
    &#39;i&#39;, &#39;j&#39;, &#39;k&#39;, &#39;l&#39;,&#39;m&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;, &#39;q&#39;, &#39;r&#39;, &#39;s&#39;, 
    &#39;t&#39;, &#39;u&#39;, &#39;v&#39;, &#39;w&#39;, &#39;x&#39;, &#39;y&#39;,&#39;z&#39;, &#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;, 
    &#39;E&#39;, &#39;F&#39;, &#39;G&#39;, &#39;H&#39;, &#39;I&#39;, &#39;J&#39;, &#39;K&#39;, &#39;L&#39;,&#39;M&#39;, &#39;N&#39;, &#39;O&#39;, 
    &#39;P&#39;, &#39;Q&#39;, &#39;R&#39;, &#39;S&#39;, &#39;T&#39;, &#39;U&#39;, &#39;V&#39;, &#39;W&#39;, &#39;X&#39;, &#39;Y&#39;,&#39;Z&#39;, 
    &#39;0&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;, &#39;!&#39;, 
    &#39;@&#39;,&#39;#&#39;, &#39;$&#39;, &#39;%&#39;, &#39;^&#39;, &#39;&&#39;, &#39;*&#39;, &#39;(&#39;, &#39;)&#39;, &#39;-&#39;, &#39;_&#39;, 
    &#39;[&#39;, &#39;]&#39;, &#39;{&#39;, &#39;}&#39;, &#39;<&#39;, &#39;>&#39;, &#39;~&#39;, &#39;`&#39;, &#39;+&#39;, &#39;=&#39;, &#39;,&#39;, 
    &#39;.&#39;, &#39;;&#39;, &#39;:&#39;, &#39;/&#39;, &#39;?&#39;, &#39;|&#39;);    // 在 $chars 中随机取 $length 个数组元素键名
    $keys = array_rand($chars, $length); 
    $password = &#39;&#39;;    
    for($i = 0; $i < $length; $i++)
    {        // 将 $length 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }    
    return $password;
}
    echo make_password(6);

Méthode 4

Utilisez md5 pour crypter l'horodatage actuel et intercepter certains chiffres. Le mot de passe généré ne contient que des lettres et des chiffres.

  1. time() Obtenez l'horodatage Unix actuel

  2. Cryptez l'horodatage obtenu lors de la première étape avec md5()

  3. Utilisez le résultat de la deuxième étape de cryptage et interceptez n chiffres pour obtenir le mot de passe souhaité

<?php
    function get_password( $length = 8 )  {
    $str = substr(md5(time()), 0, $length);    
    return $str;
}    
    echo get_password(6);

Méthode 5

str_shuffle — Au hasard brouiller une chaîne

<?php
    function random_pass( $length = 8 ){
    $password = &#39;&#39;;    
    $chars = &#39;abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHIJKMNPQRSTUVWXYZ&#39;; //去掉1跟字母l防混淆            
    if ($length > strlen($chars)) {//位数过长重复字符串一定次数
        $chars = str_repeat($chars, ceil($length / strlen($chars)));
    }    
    $chars = str_shuffle($chars);    
    $password = substr($chars, 0, $length);    
    return $password;
}
    echo random_pass(6);

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