Как создать случайный пароль с помощью PHP?

Или есть программное обеспечение для автоматического генерации случайных паролей?

Просто создайте строку случайных чисел az, AZ, 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; } 

Для оптимизации вы можете определить $ chars как статическую переменную или константу в методе (или родительском классе), если вы будете многократно вызывать эту функцию во время одного выполнения.

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

 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; } 

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

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

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

 $password = hash('sha512', rand()); 

Не стоит слишком вспоминать. Это может быть легче запомнить:

 $password = substr(hash('sha512',rand()),0,12); // Reduces the size to 12 chars 

Используется только 16 возможных символов, но это все еще 16 ^ 12 возможных паролей (при 300 000 паролей в секунду потребуется 29 лет для взлома).

Вот как я это делаю.

 $pw = ""; for ($i = 0; $i < 13; $i++) { $pw .= chr(rand(33, 126)); } 

Также вы можете попробовать функцию, которую я написал, и она доступна в моем блоге. Преимущество этой функции в том, что она придает одинаковое значение строчным, прописным, номерам и специальным символам. Здесь можно найти функцию генератора случайных паролей 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 🙂

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

Pwgen-php производит сберегательные, проворные (проще запоминающиеся) пароли: http://code.google.com/p/pwgen-php/

Может быть, это приемлемо?

Эта функция будет генерировать более сильный пароль, чем наиболее устоявшееся решение:

 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); } 

Каждый символ пароля будет [AZ] или [az] или ^ или *

 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; } 

Хороший пароль должен быть смесью как верхнего, так и нижнего регистра, имеет число, буквы, имеет специальные символы и длину более 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(); ?>"> 

Вот рабочий пример (Demo)