Генерация xkcd паролей на PHP
Известный комикс xkcd подсказывает нам, что пароль, который состоит из 4 часто употребляемых слов — легко запомнить и сложно подобрать.Перевод, оригинал
Все текущие реализации этого метода генерации паролей рассчитаны на английские слова, а значит пароли сложнее запомнить русскоязычным. Я вооружился частотным словарем русского языка, и сделал PHP библиотеку, которая поддерживает генерацию паролей из нескольких наборов слов:
английские слова (например, «idea critic happy chinese»); русские слова (например, «порошок земля нуль платье»); транслитерированные русские слова (например, «vysota razum bumazhka razmer»). Код и списки слов на GitHub.Установка с помощью composer { «require»: { «barzo/password-generator»: «dev-master» } } Генерация паролей Пароли генерирует статическая функция Generator: generate, которая принимает три параметра: список слов, длину пароля (количество слов) и разделитель слов. Например, генерации пароля из 5 транслитерированных слов разделенных дефисом: $wordList = new Barzo\Password\WordList\RuTranslit ();
echo Generator: generate ($wordList, 5, '-'); Вывод будет содержать строку похожую на: dovod-gore-sever-nomer-druzhka Для каждого списка слов есть синоним для быстрого вызова: echo Barzo\Password\Generator: generateEn (); echo Barzo\Password\Generator: generateRuTranslit (); echo Barzo\Password\Generator: generateRu (); Списки слов Английские слова (WordList\En) Список из 2048 наиболее часто используемых слов английского языка на основании корпуса современного американского английского.Пример вывода — idea critic happy chinese.
Русские слова (WordList\Ru) Список из 2048 наиболее часто используемых русских имен существительных на основании национального корпуса русского языка.Пример вывода — порошок земля нуль платье.
Русский транслит (WordList\RuTranslit) Список из 2048 слов на основании предыдущего списка, из которого исключены слова, которые содержат неоднозначные для транслитерации буквы (ц, щ, ь, ъ).Пример вывода — vysota razum bumazhka razmer.
Демо Попробовать библиотеку можно тут.