За последние 24 часа нас посетили 30747 программистов и 1480 роботов. Сейчас ищут 913 программистов ...

Генерация случайного пароля.

Тема в разделе "PHP для новичков", создана пользователем eldor, 4 янв 2016.

  1. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Нашел код генерации случайного пароля.

    Код (PHP):
    1. //Символы, которые будут использоваться в пароле.
    2. $chars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
    3.  
    4. //Определяем количество символов в $chars.
    5. $size = StrLen($chars)-1;
    6.  
    7. //Определяем пустую переменную, в которую и будем записывать символы.
    8. $b = null;
    9.  
    10. //Создаём пароль.
    11. for ($a = 1; $a <= 10; $a++)
    12. {
    13.     $b.=$chars[rand(0,$size)];
    14. }
    15.  
    16. echo $b;
    17.  
    Мне в нем все понятно кроме одной строки, которая в цикле. Не пойму почему если выводить строку полностью$b.=$chars[rand(0,$size)], то появляются именно разные буквы и цифры. А если отдельно вывести $chars[rand(0,$size)], то выводятся случайные числа от 0 до 61...
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Как-то непонятно изложена суть.
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    почему $a = 1?
    почему $a <= 10 ?

    привыкай, везде $a = 0 и $a < 10, это не так сложно.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    неправда. ты просто невнимателен.
     
  5. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    В своем коде я так и делаю как Вы указали - спасибо, что уточнили.

    Да, Вы правы - невнимателен - выводятся не только цифры, но и буквы, указанные в $chars))

    P.S. Всем спасибо - разобрался.
     
  6. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Код (PHP):
    1. echo substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 10);
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    rodent90, а если символы русские? ну т.е. UTF-8
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    shuffle только переставляет элементы местами, без повторов. в итоге сложность "пароля" будет не 64 в 10й степени, а число перестановок. на полной строке сложность такого пароля равна факториалу от 64. а на укороченной меньше в хз сколько раз. давно я математику учил.

    короче брутфорсом будет подобрать реально. нафиг такую "оптимизацию"!
     
  10. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Типичный случай, что ты хотел?
    Ну можно заморочиться с генератором из самой таблицы chr.
    Этим сделать его уникальным и независимым.
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    А не надо морочаться. В первом посте указан годный алгоритм. ТС просто сам себя заморочал, глюканул при изучении.
    Не надо решать несуществующие проблемы.
     
  12. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Ну тогда ТС. Лучше используй mt_rand. =)