Или есть программное обеспечение для автоматического генерации случайных паролей?
Просто создайте строку случайных чисел 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)