Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерация паролей, случайности 
:(
    Опции темы
Гость_Dender
Дата 15.5.2005, 10:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ, скажите, плиз, как в PHP сгенирировать пароль, т.е. строка, состоящая из случайных цифр и букв.
  Вверх
InfMag
Дата 15.5.2005, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Не судите строго, это помоему мой 3-ий скрипт из самых первых. smile
Код

<html>
<head>
<title>Random</title>
</head>
<body>
<table border=0 width=100% height=100%>
<tr>
<td align=center>
<?php
 if (isset($_GET['s']) && $_GET['s'] == "result") {
     if (isset($_POST['cb']) && $_POST['cb']==true) {
  for ($i=0; $i<$_POST['syb']; $i++) {
   switch (rand(1,36)) {
    default: echo "0"; break;
    case 1: echo "1"; break;
    case 2: echo "2"; break;
    case 3: echo "3"; break;
    case 4: echo "4"; break;
    case 5: echo "5"; break;
    case 6: echo "6"; break;
    case 7: echo "7"; break;
    case 8: echo "8"; break;
    case 9: echo "9"; break;
    case 10: echo "0"; break;
    case 11: echo "q"; break;
    case 12: echo "w"; break;
    case 13: echo "e"; break;
    case 14: echo "r"; break;
    case 15: echo "t"; break;
    case 16: echo "y"; break;
    case 17: echo "u"; break;
    case 18: echo "i"; break;
    case 19: echo "o"; break;
    case 20: echo "p"; break;
    case 21: echo "a"; break;
    case 22: echo "s"; break;
    case 23: echo "d"; break;
    case 24: echo "f"; break;
    case 25: echo "g"; break;
    case 26: echo "h"; break;
    case 27: echo "j"; break;
    case 28: echo "k"; break;
    case 29: echo "l"; break;
    case 30: echo "z"; break;
    case 31: echo "x"; break;
    case 32: echo "c"; break;
    case 33: echo "v"; break;
    case 34: echo "b"; break;
    case 35: echo "n"; break;
    case 36: echo "m"; break;}}
     } else {
  for ($i=0; $i<$_POST['syb']; $i++) {
   switch (rand(1,62)) {
    default: echo "0"; break;
    case 1: echo "1"; break;
    case 2: echo "2"; break;
    case 3: echo "3"; break;
    case 4: echo "4"; break;
    case 5: echo "5"; break;
    case 6: echo "6"; break;
    case 7: echo "7"; break;
    case 8: echo "8"; break;
    case 9: echo "9"; break;
    case 10: echo "0"; break;
    case 11: echo "q"; break;
    case 12: echo "w"; break;
    case 13: echo "e"; break;
    case 14: echo "r"; break;
    case 15: echo "t"; break;
    case 16: echo "y"; break;
    case 17: echo "u"; break;
    case 18: echo "i"; break;
    case 19: echo "o"; break;
    case 20: echo "p"; break;
    case 21: echo "a"; break;
    case 22: echo "s"; break;
    case 23: echo "d"; break;
    case 24: echo "f"; break;
    case 25: echo "g"; break;
    case 26: echo "h"; break;
    case 27: echo "j"; break;
    case 28: echo "k"; break;
    case 29: echo "l"; break;
    case 30: echo "z"; break;
    case 31: echo "x"; break;
    case 32: echo "c"; break;
    case 33: echo "v"; break;
    case 34: echo "b"; break;
    case 35: echo "n"; break;
    case 36: echo "m"; break;
    case 37: echo "Q"; break;
    case 38: echo "W"; break;
    case 39: echo "E"; break;
    case 40: echo "R"; break;
    case 41: echo "T"; break;
    case 42: echo "Y"; break;
    case 43: echo "U"; break;
    case 44: echo "I"; break;
    case 45: echo "O"; break;
    case 46: echo "P"; break;
    case 47: echo "A"; break;
    case 48: echo "S"; break;
    case 49: echo "D"; break;
    case 50: echo "F"; break;
    case 51: echo "G"; break;
    case 52: echo "H"; break;
    case 53: echo "J"; break;
    case 54: echo "K"; break;
    case 55: echo "L"; break;
    case 56: echo "Z"; break;
    case 57: echo "X"; break;
    case 58: echo "C"; break;
    case 59: echo "V"; break;
    case 60: echo "B"; break;
    case 61: echo "N"; break;
    case 62: echo "M"; break;
    }
   }
  }
 } else {
  echo "<form action=?s=result method=post>";
  echo "<select name=syb>";
  echo "<option selected value=1>1</option>";
  echo "<option value=2>2</option>";
  echo "<option value=3>3</option>";
  echo "<option value=4>4</option>";
  echo "<option value=5>5</option>";
  echo "<option value=6>6</option>";
  echo "<option value=7>7</option>";
  echo "<option value=8>8</option>";
  echo "<option value=9>9</option>";
  echo "<option value=10>10</option>";
  echo "<option value=11>11</option>";
  echo "<option value=12>12</option>";
  echo "<option value=13>13</option>";
  echo "<option value=14>14</option>";
  echo "<option value=15>15</option>";
  echo "<option value=16>16</option>";
  echo "<option value=17>17</option>";
  echo "<option value=18>18</option>";
  echo "<option value=19>19</option>";
  echo "<option value=20>20</option>";
  echo "</select><br>";
  echo "Small: <input type=checkbox name=cb><br>";
  echo "<input type=submit value=\"OK\">";
  echo "</form>";
 }
?>
</td>
</tr>
</table>
</body>
</html>

Добавлено @ 10:44
Тока rand() выдает псевдослучайные числа. smile
Надо будет мне новенький скрипт подделать. Чтобы тама одна строчка была, цикл и substr() усе вырезать по нормальной генерации. smile
PM   Вверх
Гость_Dender
Дата 15.5.2005, 10:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А есть какая-нибудь функция или алгоритм в PHP в 2-3 строчки кода?
  Вверх
InfMag
Дата 15.5.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



На мой взгяд - нет. smile
PM   Вверх
Ну, к примеру
Дата 15.5.2005, 11:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Можно ж и так:

$sql = "select PASSWORD('". rand(10, 100) ."')";
$sqlResult = mysql_query($sql);
$readyPas = mysq_result($sqlResult);

только не удобно
  Вверх
Mal Hack
Дата 15.5.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Где-то я уже выкладывал:
Код
<?php

function generate_pass( $m )
  {
   $pass = "";

   for( $i = 0 ; $i < $m ; $i++ )
    {
     $te = mt_rand( 48 , 122 );

     if( ( $te > 57 &&  $te < 65 ) || ( $te > 90 &&  $te < 97 ) )
      {  $te = $te - 9;  }

     $pass .= chr( $te );
    }

   return $pass;
  }

print generate_pass( 32 );

?>

PM ICQ   Вверх
Aliance
Дата 15.5.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



www.manlix.ru - там есть этот скрипт. сделан отлично smile
PM MAIL WWW ICQ Skype   Вверх
IZ@TOP
Дата 15.5.2005, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



А чем Вас не устраивает обычное комбинирование из символов?

Код

function randPswd($num) {
    $ret = '';
    $chars = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_-';
    for($i = 0; $i < $num; $i++) {
        $ret .= $chars[round(0, sizeof($chars)-1)];
    }
    return $ret;
}

echo randPswd(10);



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
InfMag
Дата 15.5.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



IZ@TOP
Вот то, что я хотел сделать! smile smile
PM   Вверх
InfMag
Дата 15.5.2005, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



А вот та функция, которая выполняет все мои требования: smile
Код

<?php

function genpass($n, $numbers, $uppers, $lowers)
{
    $chars = "";
    $res = "";
    if ($numbers == 1) $chars .= "0123456789";
    if ($uppers == 1) $chars .= "QWERTYUIOPASDFGHJKLZXCVBNM";
    if ($lowers == 1) $chars .= "qwertyuiopasdfghjklzxcvbnm";
    if ($numbers != 1 && $uppers != 1 && $lowers != 1)
    $chars .= "0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
    for ($i=0; $i<$n; $i++) $res .= $chars[mt_rand(0, sizeof($chars)-1)];
    return $res;
}

?>

PM   Вверх
Gold Dragon
Дата 16.5.2005, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



А разве нет шанса что пароль повториться?


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
dm9
Дата 16.5.2005, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



Есть. Также есть шанс, что ты при брутфорсе чужого пароля угадаешь его с первого раза smile

PM MAIL ICQ   Вверх
InfMag
Дата 16.5.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Red Dragon
ИМХО: Глупый вопрос.
Вот возьми пару чифр: 1 и 2.
Сначала по случайности выпадает 2, потом 1 и что? Разве может выпасть что-то еще?
Точно также ты можешь чихнуть и ударить носом по клаве,.. вдруг понимаешь, что набрал носом пароль от пентагона. smile
PM   Вверх
Mal Hack
Дата 16.5.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(InfMag @ 16.5.2005, 17:56)
Сначала по случайности выпадает 2, потом 1 и что? Разве может выпасть что-то еще?

1,5 ?
PM ICQ   Вверх
dm9
Дата 16.5.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 2
Всего: 137



smile
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1134 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.