在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级用于任何系统管理员密码。

以上是 在PHP中生成密码功能 的全部内容, 来源链接: utcz.com/z/338877.html

回到顶部