Ответ 1
Использование что-то вроде cracklib очень хорошо, если вы можете позволить себе время проверки всех потенциальных правил. Если вы просто хотите что-то быстрое - скажем, для измерителя силы на основе JavaScript, - подумайте об оценке числа потенциальных догадок, которые потребуются для атаки методом перебора. Для каждого увиденного типа символов обновите множитель на основе количества потенциальных символов этого типа. Таким образом, если у вас есть только цифры, то множитель будет 10. Если у вас только строчные буквы, то множитель равен 26. Если и то и другое, то множитель равен 36 - то есть для каждого символа в пароле атака методом перебора нужно попробовать до 36 разных персонажей. Пароль, содержащий прописные и строчные буквы, цифры и знаки препинания, будет иметь множитель 10 + 26 + 26 + 32 = 94 (более или менее в зависимости от допустимой пунктуации).
Чтобы оценить максимальное количество перестановок, которое может занять метод перебора, увеличьте множитель до степени, равной количеству цифр в пароле. Это дает вам максимальное количество предположений, которое потребуется, чтобы взломать пароль с помощью атаки методом грубой силы. Предположим, что каждое предположение занимает один цикл процессора, и, учитывая, что самый быстрый процессор вычисляет, сколько времени потребуется, чтобы взломать пароль, учитывая определенное количество перестановок. Например, если бы мой множитель был 10, а пароль длиной 10 символов, то у меня было бы 10 000 000 000 потенциальных комбинаций. На процессоре 3GHz это должно занять 10/3 * k или 3k секунд (где k - количество циклов на предположение, обычно небольшое). Понятно, что это слабый пароль.
Теперь установите несколько диапазонов, которые представляют разумную надежность пароля. Например, если вы считаете, что 8-символьный пароль с заглавными и строчными буквами минимально необходим для средней надежности, тогда ваш предел будет 52 ^ 8 или примерно 1,5 года на процессоре 3 ГГц (при условии, что k = 1). Если вы добавите цифры, то для процессора с частотой 3 ГГц значение отсечки становится равным 62 ^ 8 или примерно 8 лет.
Чтобы использовать его, вам нужно только отслеживать, какие символы вы видите, построить соответствующий множитель, рассчитать ожидаемые перестановки на основе длины пароля и сравнить его с вашими предопределенными отсечками, чтобы определить, насколько надежным является пароль.