Техническое задание #4: Валидатор пароля

Описание

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


Задача

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


Функциональные требования

  1. Объявите переменную password (тип string), которая будет хранить пароль, введённый пользователем.
  2. Объявите переменные типа bool для отслеживания каждого критерия:
    • hasUpper — содержит ли пароль заглавные буквы
    • hasLower — содержит ли пароль строчные буквы
    • hasDigit — содержит ли пароль цифры
    • hasSpecial — содержит ли пароль специальные символы
  3. Создайте переменную (или константу) specialChars типа string, которая содержит допустимые специальные символы: "!@#$%^&*"
  4. Создайте переменную (или константу) minLength типа int со значением 8 для минимальной длины пароля.
  5. Реализуйте цикл for-range, который проходит по каждой руне (символу) пароля:
    • Получите текущую руну
    • Устанавливайте соответствующие флаги true при обнаружении каждого типа символа
  6. После завершения цикла проверьте len(password) >= minLength для проверки минимальной длины.
  7. Реализуйте логику вывода результатов:
    • Если все 5 критериев выполнены → вывести ✅ Все проверки пройдены! и сообщение Пароль надёжный! 💪
    • Если не выполнены некоторые критерии → вывести для каждого невыполненного критерия сообщение с описанием проблемы
    • Выводить итоговый результат: Пароль надёжный! или Пароль слабый 😟
  8. После вывода результатов показать количество выполненных критериев из 5.

Технические требования

  1. Ввод данных:
    • Использовать пакет fmt с функцией fmt.Scanln() для считывания пароля от пользователя
  2. Вывод сообщений:
    • Использовать fmt.Println() и fmt.Printf() для вывода результатов проверки
  3. Проверка символов:
    • Пакет unicode
    • Пакет strings
  4. Логика программы:
    • Использовать цикл for-range для итерации по каждому символу пароля
    • Использовать переменные типа bool для отслеживания каждого критерия
    • Использовать условия if-else для вывода отчёта по каждому критерию
    • Использовать счётчик для подсчёта выполненных критериев

Пример работы программы

Вариант 1: Короткий пароль без спец. символов

Введите пароль: Pass123
❌ Длина менее 8 символов
❌ Нет специального символа
Пароль слабый 😟
Выполнено критериев: 3 из 5

Вариант 2: Нет заглавной буквы

Введите пароль: secure1234!
❌ Нет заглавной буквы
Пароль слабый 😟
Выполнено критериев: 4 из 5

Вариант 3: Только цифры и спец. символы

Введите пароль: 12345!@#$
❌ Нет заглавной буквы
❌ Нет строчной буквы
Пароль слабый 😟
Выполнено критериев: 3 из 5

Вариант 4: Надёжный пароль

Введите пароль: SecurePass123!
✅ Все проверки пройдены!
Пароль надёжный! 💪
Выполнено критериев: 5 из 5

Вариант 5: Надёжный пароль (другой пример)

Введите пароль: MyPassword@2025
✅ Все проверки пройдены!
Пароль надёжный! 💪
Выполнено критериев: 5 из 5