php сомневается, как создать десять случайных пароль
Здравствуйте, у меня есть этот код, который похож, что я хочу.
хорошо, что он генерировать числа от 1 до 10
и seguencia тип:
1
2
и горе будет.
я Хотел бы, что на месте числа, которые он произвел случайных паролей
типа:
w3e4r5
g6t5e4
и горе будет.
<?php
for ($x = 1; $x <= 10; $x++) {
echo "$x";
}
?>
3 answers
PHP 7 имеется функция вызова random_bytes , если использовать преобразование крутящего момента ты hex, создает друг string похожи на те, что вы хотите.
<?php
// Usando a função random_bytes do PHP 7
for ($x = 1; $x <= 10; $x++)
{
echo bin2hex(random_bytes(3)) . "<br>"; // gera uma string pseudo-randômica criptograficamente segura de 6 caracteres
}
?>
Пример вывода(меняется каждый раз, когда колеса сценарий):
eb5a35
ce5121
d5c514
e4eec4
48d781
52367c
ae39cd
5ef0ff
dfe681
0ac13f
Артикул: https://secure.php.net/manual/pt_BR/function.random-bytes.php
, Но если вы еще не используйте PHP7 или не понравилось, вариант с шестнадцатеричных используется в функции, существующие в PHP7, техника интересно, что я видел в Stack Overflow на английском языке и адаптирована здесь-это использование str_shuffle, функция, которая преобразует строки в случайном порядке. Эта функция присутствует в PHP начиная с PHP 4.
<?php
// Usando str_shuffle (mistura strings aleatoriamente)
for ($x = 1; $x <= 10; $x++)
{
//Inclua todos os caracteres que gostaria que aparecessem nas strings geradas
$caracteres_q_farao_parte = 'abcdefghijklmnopqrstuvwxyz0123456789';
$password = substr( str_shuffle($caracteres_q_farao_parte), 0, 6 );
echo $password . "<br>";
}
?>
Пример вывода(выйдут разные каждый раз запускать скрипт):
yc7dj6
g57rt0
prwgdn
hctvog
d2l0cq
r78fp1
0z6c4e
95m8fa
19bnx5
vyw8p6
Артикул: http://php.net/manual/pt_BR/function.str-shuffle.php
Если вы действительно заботитесь о "необоснованно" с безопасности следует использовать LibSodium, он имеет обе функции, чтобы создать и преобразовать в шестнадцатеричное, я ответа это - , основанной на что я ответил, здесь.
for($gerar = 10; $gerar > 0; $gerar--){
echo \Sodium\bin2hex( \Sodium\randombytes_buf(3) );
}
bin2hex
оригинальной PHP, как ответил @Antonio Alexandre, является уязвимым для атак side-channel, а \Sodium\bin2hex
является более устойчивым и этот тип атаки.
Вот решение
function randomPassword() {
$alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = array();
$alphaLength = strlen($alphabet) - 1;
for ($i = 0; $i < 8; $i++) {
$n = rand(0, $alphaLength);
$pass[] = $alphabet[$n];
}
return implode($pass);
}
for ($x = 1; $x <= 10; $x++) {
echo randomPassword() .'<br>';
}