Как генерировать случайный пароль с PHP?

Я предпочитаю использовать lib fromm Google Collections служебных методов от объектов класса , который помогает мне содержать свой код в чистоте. Очень часто equals и hashcode методы сделаны из шаблона IDE, таким образом, их не являются чистыми для чтения.

37
задан Pool 3 December 2009 в 03:48
поделиться

4 ответа

Just build a string of random a-z, A-Z, 0-9 (or whatever you want) up to the desired length. Here's an example in 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;
}

To optimize, you can define $chars as a static variable or constant in the method (or parent class) if you'll be calling this function many times during a single execution.

96
ответ дан 27 November 2019 в 04:06
поделиться

Я хочу поиграть в игру. Самый простой способ - это сделать:

function rand_passwd( $length = 8, $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' ) {
    return substr( str_shuffle( $chars ), 0, $length );
}

Это в значительной степени просто модификация первого ответа. Укажите желаемые символы во втором параметре и длину пароля в первом.

6
ответ дан 27 November 2019 в 04:06
поделиться

Вот простое решение. Он будет содержать строчные буквы и цифры.

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;
}
12
ответ дан 27 November 2019 в 04:06
поделиться

Вы можете просто использовать пакет Text_Password PEAR - он поддерживает довольно много алгоритмов их генерации; и освобождает время, чтобы заняться чем-нибудь другим.

0
ответ дан 27 November 2019 в 04:06
поделиться