如何用PHP生成随机密码?
或者有自动生成随机密码的软件吗?只需构建一个随机如何用PHP生成随机密码?,php,random,passwords,Php,Random,Passwords,或者有自动生成随机密码的软件吗?只需构建一个随机a-z,a-z,0-9(或任何您想要的)字符串,直到所需的长度。以下是PHP中的一个示例: function generatePassword($length = 8) { $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $count = mb_strlen($chars); for ($i = 0, $result =
a-z
,a-z
,0-9
(或任何您想要的)字符串,直到所需的长度。以下是PHP中的一个示例:
function generatePassword($length = 8) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$count = mb_strlen($chars);
for ($i = 0, $result = ''; $i < $length; $i++) {
$index = rand(0, $count - 1);
$result .= mb_substr($chars, $index, 1);
}
return $result;
}
函数生成密码($length=8){
$chars='ABCDEFGHIjklmnopqrstuvxyzabCDEFGHIjklmnopqrstuvxyzo123456789';
$count=mb_strlen($chars);
对于($i=0,$result='';$i<$length;$i++){
$index=rand(0,$count-1);
$result.=mb_substr($chars,$index,1);
}
返回$result;
}
要进行优化,如果要在一次执行过程中多次调用此函数,可以将
$chars
定义为方法(或父类)中的静态变量或常量。我想玩这个游戏。最简单的方法是:
function rand_passwd( $length = 8, $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' ) {
return substr( str_shuffle( $chars ), 0, $length );
}
这几乎只是对第一个答案的修改。在第二个参数中指定所需的字符,在第一个参数中指定密码的长度。这里有一个简单的解决方案。它将包含小写字母和数字
substr(str_shuffle(strtolower(sha1(rand() . time() . "my salt string"))),0, $PASSWORD_LENGTH);
这里有一个更强大的解决方案,在所需的字符范围内随机生成字符代码,长度在所需的范围内
function generateRandomPassword() {
//Initialize the random password
$password = '';
//Initialize a random desired length
$desired_length = rand(8, 12);
for($length = 0; $length < $desired_length; $length++) {
//Append a random ASCII character (including symbols)
$password .= chr(rand(32, 126));
}
return $password;
}
函数生成器域密码(){
//初始化随机密码
$password='';
//初始化所需的随机长度
$desired_length=兰特(8,12);
对于($length=0;$length<$desired_length;$length++){
//附加随机ASCII字符(包括符号)
$password.=chr(兰特(32226));
}
返回$password;
}
您可以直接使用-它支持许多生成算法;你也可以试试我写的一个功能,可以从我的博客上找到。此函数的优点是它对小写、大写、数字和特殊字符具有同等的重要性。可以在这里找到
Pwgen php生成可存储、可发音(更容易记住)的密码:
这可以接受吗?我喜欢洗牌随机字符数组
$a = str_split("abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXY0123456789");
shuffle($a);
echo implode($a); //maxlength
echo "\n".substr( implode($a), 0, 10 ); //instead of 10 => any length
//As function:
function getMeRandomPwd($length){
$a = str_split("abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXY0123456789");
shuffle($a);
return substr( implode($a), 0, $length );
}
echo "\n".getMeRandomPwd(8)."\n".getMeRandomPwd(11);
// Outpus something like:
// 3Ai4Xf6R2I8bYGUmKgB9jpqo7ncV5teuQhkOHJCNrTP0sLFd1wxSMlEWvyaD
// 3Ai4Xf6R2I
// JsBKWFDa
// gfxsjr3dX70
如果您需要更长的密码,只需连接几次charlist:)此函数将生成比大多数woted解决方案更强大的密码:
function generatePassword($size=8){
$p = openssl_random_pseudo_bytes(ceil($size*0.67), $crypto_strong);
$p = str_replace('=', '', base64_encode($p));
$p = strtr($p, '+/', '^*');
return substr($p, 0, $size);
}
密码的每个字符将是[A-Z]或[A-Z]或^或*函数生成密码($length=6){
function generate_password($length = 6) {
$password = '';
$chars = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
for ($i = 0; $i < $length; $i ++) {
$password .= $chars[array_rand($chars)];
}
return $password;
}
$password='';
$chars=array_merge(范围('a','z')、范围('a','z')、范围(0,9));
对于($i=0;$i<$length;$i++){
$password.=$chars[array_rand($chars)];
}
返回$password;
}
我就是这样做的
$pw = "";
for ($i = 0; $i < 13; $i++)
{
$pw .= chr(rand(33, 126));
}
$pw=”“;
对于($i=0;$i<13;$i++)
{
$pw.=chr(33126兰特);
}
一个好的密码应该是大写、小写、数字、字母、特殊字符以及长度超过6个字符的混合体。以下是我在应用程序中使用的功能
function randomPassword( $length = 8 )
{
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+;:,.?";
$length = rand(10, 16);
$password = substr( str_shuffle(sha1(rand() . time()) . $chars ), 0, $length );
return $password;
}
这将有助于创建随机密码:
<?php
function generatePassword ($length = 8)
{
$genpassword = "";
$possible = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$i = 0;
while ($i < $length) {
$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
if (!strstr($genpassword, $char)) {
$genpassword .= $char;
$i++;
}
}
return $genpassword;
}
?>
<input type="text" value="<?php echo generatePassword(); ?>">
使用
它有许多选项可用于创建不同类型的密码:
ComputerPasswordGenerator()
HybridPasswordGenerator()
->sjgX-PFjH-zxMz-PRDz-G6mx-wMJ4-ST24
HumanPasswordGenerator()
->Verkuemmerungen Verlotteret dreinzuschauen
(基于单词列表。在本例中为德语单词列表)
RequirementPasswordGenerator()
计算机密码发生器
$generator
->setOptionValue(ComputerPasswordGenerator::OPTION_UPPER_CASE, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_LOWER_CASE, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_NUMBERS, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_SYMBOLS, false)
;
$password = $generator->generatePassword();
$generator
->setLength(16)
->setOptionValue(RequirementPasswordGenerator::OPTION_UPPER_CASE, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_LOWER_CASE, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_NUMBERS, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_SYMBOLS, true)
->setMinimumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_LOWER_CASE, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_NUMBERS, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_SYMBOLS, 2)
->setMaximumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_LOWER_CASE, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_NUMBERS, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_SYMBOLS, 8)
;
$password = $generator->generatePassword();
RequirementPasswordGenerator
$generator
->setOptionValue(ComputerPasswordGenerator::OPTION_UPPER_CASE, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_LOWER_CASE, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_NUMBERS, true)
->setOptionValue(ComputerPasswordGenerator::OPTION_SYMBOLS, false)
;
$password = $generator->generatePassword();
$generator
->setLength(16)
->setOptionValue(RequirementPasswordGenerator::OPTION_UPPER_CASE, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_LOWER_CASE, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_NUMBERS, true)
->setOptionValue(RequirementPasswordGenerator::OPTION_SYMBOLS, true)
->setMinimumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_LOWER_CASE, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_NUMBERS, 2)
->setMinimumCount(RequirementPasswordGenerator::OPTION_SYMBOLS, 2)
->setMaximumCount(RequirementPasswordGenerator::OPTION_UPPER_CASE, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_LOWER_CASE, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_NUMBERS, 8)
->setMaximumCount(RequirementPasswordGenerator::OPTION_SYMBOLS, 8)
;
$password = $generator->generatePassword();
这是一个函数,它生成一个最小长度、最小位数和最小字母数的密码
function generatePassword() {
$min_length=8; //Minimum length of the password
$min_numbers=2; //Minimum of numbers AND special characters
$min_letters=2; //Minimum of letters
$password = '';
$numbers=0;
$letters=0;
$length=0;
while ( $length <= $min_length OR $numbers <= $min_numbers OR $letters <= $min_letters) {
$length+=1;
$type=rand(1, 3);
if ($type==1) {
$password .= chr(rand(33, 64)); //Numbers and special characters
$numbers+=1;
}elseif ($type==2) {
$password .= chr(rand(65, 90)); //A->Z
$letters+=1;
}else {
$password .= chr(rand(97, 122)); //a->z
$letters+=1;
}
}
return $password;
}
函数generatePassword(){
$min_length=8;//密码的最小长度
$min_numbers=2;//数字和特殊字符的最小值
$min_letters=2;//最小字母数
$password='';
$numbers=0;
$letters=0;
$length=0;
而($length另一种非常简单(而且安全!)的方法是以下方法(我用这种方法生成我自己的所有密码):
这将生成一个16个字符的密码,该密码使用的字符范围相当合理
但是,根据您的要求(例如,如果用户需要键入密码),可能需要删除可能会混淆的字符(如l、I、1、0、O、5、S等)。在这种情况下,上述解决方案可能有点过于简单。我使用st_split and Inflode函数:
function genarateKey(){
$limit= 8;
$chars= 'abcdefghijklmnopqrstuvxwyz1234567890!@#$%^&*()_+=-[]{}\|ABCDEFGHIJKLMNOPQRSTUVXWYZ';
$chararray= str_split($chars);
$gen=array();
for($i=0;$i<$limit;$i++){
$index=rand(0,strlen($chars)-1);
$gen[$i]= $chararray[$index];
}
return implode($gen); //converts array to string
}
函数genarateKey(){
$limit=8;
$chars='abcdefghijjklmnopqrstuvxwyz1234567890!@$%^&*()(+=-[]{}\\'ABCDEFGHIJKLMNOPQRSTUVXWYZ';
$chararray=str_split($chars);
$gen=array();
对于($i=0;$i可记忆密码生成器
function password($length)
{
$vowel = array(
'a',
'e',
'i',
'o',
'u',
);
$consonant = array(
'b',
'c',
'd',
'f',
'g',
'h',
'j',
'k',
'l',
'm',
'n',
'p',
'q',
'r',
's',
't',
'v',
'w',
'x',
'y',
'z',
);
$result = '';
for ($i = 0; $i < $length; $i++) {
if ($i % 2 == 0) {
$result .= $consonant[rand(0, 15)];
} else {
$result .= $vowel[rand(0, 4)];
}
}
return $result;
}
此功能将包括半位数字和半个数字:
function generateMixedPassword($length = 8) {
$base = 'abcdefghijklmnopqrstuvwxyz';
$baseD = '0123456789';
$r = array();
for ($i = 0; $i < $length; $i += 2) {
$r[] = substr($base, rand(0, strlen($base) - 1), 1);
}
for ($i = 0; $i < $length; $i += 2) {
$r[] = substr($baseD, rand(0, strlen($baseD) - 1), 1);
}
shuffle($r);
return implode('', $r);
}
function generateMexedPassword($length=8){
$base='abcdefghijklmnopqrstuvxyz';
$baseD='0123456789';
$r=数组();
对于($i=0;$i<$length;$i+=2){
$r[]=substr($base,rand(0,strlen($base)-1),1);
}
对于($i=0;$i<$length;$i+=2){
$r[]=substr($baseD,rand(0,strlen($baseD)-1),1);
}
洗牌($r);
返回内爆(“”,$r);
}
使用相同的登录名,它还可以扩展为包含特殊字符我认为生成随机密码的更好方法是使用下面的函数,如果有人需要,那么您可以使用这些函数作为强密码
public function randPassword($upper = 2, $lower = 3, $numeric = 2, $other = 1) {
$pass_order = Array();
$passWord = '';
//Create contents of the password
for ($i = 0; $i < $upper; $i++) {
$pass_order[] = chr(rand(65, 90));
}
for ($i = 0; $i < $lower; $i++) {
$pass_order[] = chr(rand(97, 122));
}
for ($i = 0; $i < $numeric; $i++) {
$pass_order[] = chr(rand(48, 57));
}
for ($i = 0; $i < $other; $i++) {
$pass_order[] = chr(rand(33, 47));
}
//using shuffle() to shuffle the order
shuffle($pass_order);
//Final password string
foreach ($pass_order as $char) {
$passWord .= $char;
}
return $passWord;
}
public函数和密码($upper=2,$lower=3,$numeric=2,$other=1){
$pass_order=Array();
$passWord='';
//创建密码的内容
对于($i=0;$i<$upper;$i++){
$pass_order[]=chr(兰特(65,90));
}
对于($i=0;$i<$lower;$i++){
$pass_order[]=chr(兰特(97122));
}
对于($i=0;$i<$numeric;$i++){
$pass_order[]=chr(兰特(48,57));
}
对于($i=0;$i<$other;$i++){
$pass_order[]=chr(兰特(33,47));