str_shuffle str_random segura numero name letras generar contraseña aleatorios aleatorias aleatoria php random passwords

segura - str_random php



¿Cómo generar una contraseña aleatoria con PHP? (15)

Aquí hay una solución simple. Contendrá letras y números minúsculos.

substr(str_shuffle(strtolower(sha1(rand() . time() . "my salt string"))),0, $PASSWORD_LENGTH);

Aquí hay una solución más fuerte genera aleatoriamente los códigos de caracteres en el rango de caracteres deseado para una longitud aleatoria dentro de un rango deseado.

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

¿O hay un software para generar automáticamente contraseñas aleatorias?


Así es como lo hago.

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


Esta función generará una contraseña más sólida que la solución más utilizada:

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

Cada carácter de contraseña será [AZ] o [az] o ^ o *


Esto ayudará a crear una contraseña aleatoria:

<?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(); ?>">

Aquí está el ejemplo de trabajo (Demo)


Me gusta mezclar una matriz de caracteres aleatorios

$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

Si necesita que la contraseña sea más larga, simplemente concatenar charlist varias veces :)




Quiero jugar el juego La forma más simple sería hacer:

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

Esto es solo una modificación de la primera respuesta. Especifique los caracteres que desea en los segundos parámetros y la longitud de la contraseña en el primero.


Simplemente construye una cadena de az al azar, AZ, 0-9 (o lo que quieras) hasta la longitud deseada. Aquí hay un ejemplo en 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; }

Para optimizar, puede definir $ chars como una variable estática o constante en el método (o clase principal) si va a llamar a esta función muchas veces durante una sola ejecución.


También puedes probar una función que escribí y está disponible desde mi blog. La ventaja de esta función es que otorga la misma importancia a minúsculas, mayúsculas, números y caracteres especiales. Se puede encontrar aquí PHP función de generador de contraseñas aleatorias


Una buena contraseña debe ser una mezcla de mayúsculas, minúsculas, tiene números, letras, tiene caracteres especiales y tiene más de 6 caracteres. Aquí está la función que uso en mis aplicaciones.

function randomPassword( $length = 8 ) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+;:,.?"; $length = rand(10, 16); $password = substr( str_shuffle(sha1(rand() . time()) . $chars ), 0, $length ); return $password; }


aquí hay una función que genera una contraseña con una longitud mínima, un número mínimo de dígitos y un número mínimo de letras.

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


usar hackzilla/password-generator

tiene muchas opciones para crear diferentes tipos de contraseñas:

  • ComputerPasswordGenerator()
  • HybridPasswordGenerator() -> sjgX-PFjH-zxMz-PRDz-G6mx-wMJ4-ST24
  • HumanPasswordGenerator() -> Verkuemmerungen-verlottertet-dreinzuschauen (lista de palabras basada, en este caso, una lista de palabras alemanas)
  • RequirementPasswordGenerator()

ComputerPasswordGenerator

$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();

RequirementPasswordGenerator

$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();


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

No debería ser demasiado difícil de recordar. Sin embargo, esto podría ser más fácil de recordar:

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

Solo se usan 16 caracteres posibles, pero aún hay 16 ^ 12 contraseñas posibles (con 300,000 contraseñas / segundo, llevaría 29 años crackear).


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