Рубрики
Без рубрики

Assay – Библиотека генерации и проверки паролей

Приложения и веб-сайты, которые позволяют пользователям регистрироваться, в основном имеют ограничения на использование пароля, такого как Pass… С тегами java, пароли, библиотека, программирование.

Приложения и веб-сайты, которые позволяют пользователям регистрироваться, в основном имеют ограничения по паролю, такие как

  • Пароли должны содержать не менее 8 символов
  • Пароли должны содержать буквы, цифры и специальные символы
  • Пароли не могут быть ни одним из предыдущих 3 или 5 паролей
  • Пароли нелегко угадать
  • и так далее

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

Генерация и проверка пароля требуют определения определенного набора правил. Правила можно в широком смысле разделить на

  • Позитивные правила, для которых требуется, чтобы пароль соответствовал определенному набору правил
  • Отрицательные правила – это те, которые отклоняют пароль, если он соответствует этим правилам

Для реализации требований к положительным и отрицательным правилам библиотека Passat предоставила 3 компонента

  • Интерфейс Rule – помогает определять различные типы правил, которые используются для проверки соответствия пароля заданной политике
  • Средство проверки пароля – Класс средства проверки, который проверяет данный пароль на соответствие набору правил
  • Генератор паролей – Класс генерации паролей, который генерирует пароль, соответствующий набору правил

Passey уже предоставляет множество классов как для положительных, так и для отрицательных наборов правил, которые включают

  • Allowedcharactersrule , Правило символов , Правило длины и еще несколько для положительных правил
  • Правила словаря, Правила истории, Правило повторения символов , Правило имени пользователя и многое другое о негативных правилах

Однако мы можем определить наши собственные правила, определив класс, который реализует интерфейс Rule .

Теперь давайте посмотрим на Пассея в действии. В первом фрагменте кода мы определяем набор правил, которым должен удовлетворять предоставленный пароль, они являются

  • Пароль должен быть 8, длина 12 символов
  • Иметь по крайней мере одну заглавную букву и один алфавит в нижнем регистре
  • Иметь по крайней мере одну цифру и один специальный символ
  • Он не может иметь последовательности ни в алфавитах, ни в числах, таких как abcdefgh или 234567 и так далее.
  • Он не может содержать повторяющихся символов из 4 или более, таких как 88888 или ggggg
  • В нем не может быть пробела

Вот фрагмент кода

PasswordValidator validator = new PasswordValidator(
    // length between 8 and 16 characters
    new LengthRule(8, 12),

    // at least one upper-case character
    new CharacterRule(EnglishCharacterData.UpperCase, 1),

    // at least one lower-case character
    new CharacterRule(EnglishCharacterData.LowerCase, 1),

    // at least one digit character
    new CharacterRule(EnglishCharacterData.Digit, 1),

    // at least one symbol (special character)
    new CharacterRule(EnglishCharacterData.Special, 1),

    // define some illegal sequences that will fail when >= 5 chars long
    // alphabetical is of the form 'abcde', numerical is '34567'
    // the false parameter indicates that wrapped sequences are allowed; e.g.
    // 'xyzabc'
    new IllegalSequenceRule(EnglishSequenceData.Alphabetical, 5, false),
    new IllegalSequenceRule(EnglishSequenceData.Numerical, 5, false),
    new RepeatCharactersRule(4),

    // no whitespace
    new WhitespaceRule());

    final char[] password = System.console().readPassword("Password: ");
    RuleResult result = validator.validate(new PasswordData(new String(password)));
    if (result.isValid())
    {
        System.out.println("Password is valid");
    }
    else
    {
        System.out.println("Invalid password:");
        for (String msg : validator.getMessages(result))
        {
            System.out.println(msg);
        }
    }

Правила должны быть понятны сами по себе. Когда код запускается, он запрашивает пароль, если мы введем пароль, скажем, 88888, результатом будет следующее

Password: <88888>
Invalid password:
Password must be 8 or more characters in length.
Password must contain 1 or more uppercase characters.
Password must contain 1 or more lowercase characters.
Password must contain 1 or more special characters.
Password contains 1 sequences of 4 or more repeated characters, but only 1 allowed: [88888].

Как мы можем ясно видеть, Passay гарантирует, что все правила соблюдены, прежде чем принимать пароль

Следующая часть этого – функция генерации паролей, которую предоставляет Assay. Давайте посмотрим на фрагмент кода. Дополнительным преимуществом этого является то, что мы проверяем пароль, сгенерированный Passey, используя его собственный валидатор, чтобы проверить, соответствует ли сгенерированный пароль правилам, установленным при генерации.

PasswordGenerator generator = new PasswordGenerator();

// Generated password is 12 characters long, which complies with policy
String passwd = generator.generatePassword(12, rules);
System.out.println("Generated Password:" + passwd);

PasswordValidator validator2 = new PasswordValidator(
        // length between 8 and 16 characters
        new LengthRule(12),

        // at least one upper-case character
        new CharacterRule(EnglishCharacterData.UpperCase, 1),

        // at least one lower-case character
        new CharacterRule(EnglishCharacterData.LowerCase, 1),

        // at least one digit character
        new CharacterRule(EnglishCharacterData.Digit, 4));
RuleResult res = validator2.validate(new PasswordData(passwd));
if (res.isValid())
{
    System.out.println("Valid");
}
else
{
    System.out.println("Invalid");
}

Выполнение кода приведет к получению результата, подобного этому

Generated Password:Rb4Xdj1KO570
Valid

Passay определенно облегчает жизнь разработчикам, которые хотят проверять/генерировать пароли. В дополнение к приведенным выше примерам, Assay предоставляет гораздо более сложные сценарии, такие как исторические пароли, где пароль должен быть любым из предыдущих 3 паролей; удовлетворять m из n определенных правил и так далее. Кроме того, набор правил можно расширять за счет реализации интерфейса правил для дополнительных правил.

Направляйтесь к www.passay.org для получения более подробной информации.

Счастливого кодирования!

Фото предоставлено: Pixabay

Оригинал: “https://dev.to/rprabhu/passay-the-password-generation-and-validation-library-6om”