Как генерировать (несколько) безопасные пароли в PHP? - PullRequest
3 голосов
/ 17 ноября 2009

Я пытаюсь придумать функцию, которая может генерировать случайные пароли, которая должна соответствовать следующим требованиям:

  • От 8 до 14 символов
  • Содержит хотя бы одно из следующего: строчная буква, прописная буква, пунктуация и цифра

Как лучше всего поступить так, чтобы функция могла генерировать все возможные пароли, отвечающие указанным требованиям?

Ответы [ 4 ]

6 голосов
/ 17 ноября 2009
  1. Создайте строчную букву, заглавную букву, символ пунктуации и число, чтобы у вас было 4 символа.
  2. Генерация 4-10 случайных символов из всего набора выше.
  3. Перемешать полученную строку. В PHP вы можете использовать str_shuffle.

Тем не менее, следует отметить, что если вы генерируете случайные символы, принудительное использование в каждом пароле хотя бы одной цифры / пунктуации и т. Д. На самом деле не является более безопасным. На самом деле, можно сказать, что он менее безопасен, поскольку фактически ограничивает ваш выбор пароля.

1 голос
/ 17 ноября 2009

В Google есть много примеров "PHP Password Generator" (включая исходный код). Некоторые из них могут указывать минимальные требования к классам персонажей, о которых вы упомянули.

Большинство из них используют функцию rand(). Это имеет некоторые угрозы безопасности, но они могут быть приемлемы для вас. Вы также можете заменить это функцией mt_rand() для лучшей случайности.

Если вам действительно нужен хороший случайный источник, вам нужно опираться на ОС (то есть /dev/random в linux или Utilities объект в Windows).

0 голосов
/ 17 ноября 2009

Должно быть довольно просто с sha1. Что-то вроде этого и просто нарежьте его, чтобы исправить длину, выберите случайным образом верхний регистр, вставьте случайную пунктуацию:

sha1(microtime() . rand(0,100))

Я должен отметить, что видел где-то действительно умный подход к такого рода генерации паролей, который, вероятно, был лучше этого, но не могу вспомнить, где это было.

0 голосов
/ 17 ноября 2009

несколько ленивый подход:

Генерация случайного числа от 8 до 14
сгенерировать абсолютно случайную строку символов такой длинной Сравните это с регулярным выражением, которое определяет требование в нижнем / верхнем регистре / и т.д. Если это не помогло, попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...