Эта статья косвенно относится к кодингу, т.к. программирование тут является всего лишь средством реализации описанных процессов.

Как проверить пароль на слабость? Существует немалое количество таких методов, и один из них - проверка по словарю. Т.е. если пароль присутствует в словаре - он является слабым. Наша задача усилить этот метод.

Предположим, у нас есть пароль pass12345woRd_. В чем заключается его сила? Смотри внимательно: длина пароля больше пяти символов, в пароле присутствуют буквы разных регистров и цифры, также присутствуют спецсимволы. Слабое место такого пароля это только то, что удалив все цифры и спецсимволы, а также переведя все оставшиеся символы в один регистр мы получаем словарное слово - password. Отсюда следует, что наша программа проверки паролей должна оставлять только символы английского алфавита и перевести все в нужный регистр, а затем искать это слово в словаре.

Но ведь может встретиться и такой вариант нашего пароля p4ssw0Rd_. И только что рассмотренный алгоритм действий не подходит. Можно заменять цифры на похожие буквы или наоборот, но тогда пароль типа p4assw0oRd_ не будет распознан. Поэтому можно усилить имеющийся алгоритм одним условием: знаки 1,i,l,2,z,3,e,4,a,5,s,6,d,7,8,b,9,g,0,o,+,t будут вырезаться. Конечно, вместе с этим не пройдут проверку множество сравнительно надежных паролей. А вот пароль password после обработки будет выглядеть как pwr. Кстати, пароли power и powered так же будут выглядеть после такой обработки. Т.о. словарь для перебора значительно "похудеет", что не может не радовать.

В дальнейшем мы будем заменять несколько идущих подряд согласных одним согласным. Теперь пора вспомнить про фонетические замены и пароль thanx - фонетический двойник пароля thanks. Если вы следите за повествованием, то должны заметить, что знак "s" мы уже вырезали, как и знак "a". Т.е. вполне логично заменять x=k. А несколько идущих подряд одинаковых символов (групп символов) лучше заменить на один такой символ (группу символов). Это очень сильно поможет в борьбе с "особенно сообразительными" пользователями, которым лень запоминать длинные последовательности символов. Например, hnnnnnn меняем на hn.

Если еще немного подумать, то можно найти гораздо больше шаблонов для замены и преобразований. Но, скажем, для контроля безопасности паролей сотрудников, этот подход будет эффективным. Конкретную реализацию этого подхода я не создал, да и вряд ли буду браться за это. Просто у меня возникла эта довольно интересная идея, которой я и решил поделиться.