Генерация 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.

Демо

Попробовать библиотеку можно тут.

ссылка на оригинал статьи http://habrahabr.ru/post/232157/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *