PHP中生成密码函数
我之前曾经讨论过生成随机密码。尽管该函数生成了一些不错的密码,但它们可能不如应有的独特。
该功能取自Webtoolkit,可创建具有不同复杂程度的不同长度的密码。
function generatePassword($length=9, $strength=0) { $vowels = 'aeiu'; $consonants = 'bdghjmnpqrstvxyz'; if ( $strength & 1 ) { $consonants .= 'BDGHJLMNPQRSTVWXYZ'; } if ( $strength & 2 ) { $vowels .= 'AEU'; } if ( $strength & 4 ) { $consonants .= '23456789'; } if ( $strength & 8 ) { $consonants .= '@#$%'; } $password = ''; $alt = time() % 2; for ($i = 0; $i < $length; $i++) { if ($alt == 1) { $password .= $consonants[(rand() % strlen($consonants))]; $alt = 0; } else { $password .= $vowels[(rand() % strlen($vowels))]; $alt = 1; } } return $password; }
第一个参数是函数应返回的字符数。第二个参数是一个最大为8的数字,它转换为复杂度。最少复杂的密码仅包含小写辅音。最复杂的密码由大写和小写字母以及数字和符号组成。
您可能会注意到某些字母和数字丢失了,这是有意的。生成密码时,许多字符可能非常相似。零看起来像是大写的O,而我看起来像是数字的小写L。删除这些字母会阻止人们输入错误的密码,以后不得不重新申请密码。而且,即使您不应该写下许多密码,即使这样做,许多人看起来也一样。例如,在混合使用大写和小写字母时,很难看到大写和小写字母W之间的差异。
您可以像这样运行该函数。
echo generatePassword(8,1); // 放任自流 echo generatePassword(8,2); // 使用者 echo generatePassword(8,3); // 迷宫 echo generatePassword(8,4); // tanapa3a echo generatePassword(8,5); // ary2ugeR echo generatePassword(8,6); // utebyq echo generatePassword(8,7); // yRysuNEV echo generatePassword(8,8); // ygyqyha%
这只是我从这些参数中获得的输出,每次都运行一个不同的密码。您应该将8级用于任何系统管理员密码。