Я провел небольшое исследование, чтобы найти хороший пример проверки надежности пароля. JavaScript и Обычные выражения (регулярное выражение). В приложении на моей работе мы отправляем обратно сообщение для проверки надежности пароля, что довольно неудобно для наших пользователей.

Что такое регулярное выражение?

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

Эта статья определенно не предназначена для обучения вас регулярным выражениям. Просто знайте, что возможность использовать регулярные выражения полностью упростит вашу разработку при поиске шаблонов в тексте. Также важно отметить, что большинство языков разработки оптимизированы для использования регулярных выражений… поэтому вместо последовательного синтаксического анализа и поиска строк Regex обычно намного быстрее как на стороне сервера, так и на стороне клиента.

Я довольно долго искал в Интернете, прежде чем нашел его пример некоторые отличные регулярные выражения, которые ищут комбинацию длины, символов и символов. Однако, на мой вкус, код был немного чрезмерным и заточенным под .NET. Поэтому я упростил код и поместил его в JavaScript. Это позволяет браузеру клиента проверять надежность пароля в режиме реального времени перед его публикацией… и дает пользователю некоторое представление о надежности пароля.

Введите пароль пользователя А

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

Функция надежности пароля JavaScript

Обычные выражения сделать фантастическую работу по сокращению длины кода. Эта функция Javascript проверяет надежность пароля и определяет, является ли он простым, средним, сложным или чрезвычайно трудным для угадывания. Когда человек пишет, он показывает подсказки, чтобы побудить его стать сильнее. Он проверяет пароль на основе:

  • Длина – Если длина меньше или больше 8 символов.
  • Смешанный случай – Если пароль содержит как прописные, так и строчные буквы.
  • Числа – Если пароль содержит цифры.
  • Специальные символы – Если пароль содержит специальные символы.
ЧИТАТЬ  NYT Connections Today – советы и ответы на понедельник, 15 июля (игра № 400)

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

function checkPasswordStrength(password) {
  // Initialize variables
  var strength = 0;
  var tips = "";

  // Check password length
  if (password.length < 8) {
    tips += "Make the password longer. ";
  } else {
    strength += 1;
  }

  // Check for mixed case
  if (password.match(/[a-z]/) && password.match(/[A-Z]/)) {
    strength += 1;
  } else {
    tips += "Use both lowercase and uppercase letters. ";
  }

  // Check for numbers
  if (password.match(/\d/)) {
    strength += 1;
  } else {
    tips += "Include at least one number. ";
  }

  // Check for special characters
  if (password.match(/[^a-zA-Z\d]/)) {
    strength += 1;
  } else {
    tips += "Include at least one special character. ";
  }

  // Return results
  if (strength < 2) {
    return "Easy to guess. " + tips;
  } else if (strength === 2) {
    return "Medium difficulty. " + tips;
  } else if (strength === 3) {
    return "Difficult. " + tips;
  } else {
    return "Extremely difficult. " + tips;
  }
}

Если вы хотите обновить цвет пера, вы также можете сделать это, обновив код после // Return results линия.

// Get the paragraph element
  var strengthElement = document.getElementById("passwordStrength");

  // Return results
  if (strength < 2) {
    strengthElement.textContent = "Easy to guess. " + tips;
    strengthElement.style.color = "red";
  } else if (strength === 2) {
    strengthElement.textContent = "Medium difficulty. " + tips;
    strengthElement.style.color = "orange";
  } else if (strength === 3) {
    strengthElement.textContent = "Difficult. " + tips;
    strengthElement.style.color = "black";
  } else {
    strengthElement.textContent = "Extremely difficult. " + tips;
    strengthElement.style.color = "green";
  }

Функция надежности пароля jQuery

С jQuery нам фактически не нужно писать форму с обновлением ввода:

<form>
    <label for="password">Enter password:</label>
    <input type="password" id="password">
    <p id="password-strength"></p>
</form>

Мы также можем изменить цвет сообщений, если захотим.

$(document).ready(function() {
    $('#password').on('input', function() {
        var password = $(this).val();
        var strength = 0;
        var tips = "";
  
        // Check password length
        if (password.length < 8) {
            tips += "Make the password longer. ";
        } else {
            strength += 1;
        }
  
        // Check for mixed case
        if (password.match(/[a-z]/) && password.match(/[A-Z]/)) {
            strength += 1;
        } else {
            tips += "Use both lowercase and uppercase letters. ";
        }
  
        // Check for numbers
        if (password.match(/\d/)) {
            strength += 1;
        } else {
            tips += "Include at least one number. ";
        }
  
        // Check for special characters
        if (password.match(/[^a-zA-Z\d]/)) {
            strength += 1;
        } else {
            tips += "Include at least one special character. ";
        }
  
        // Update the text and color based on the password strength
        var passwordStrengthElement = $('#password-strength');
        if (strength < 2) {
            passwordStrengthElement.text("Easy to guess. " + tips);
            passwordStrengthElement.css('color', 'red');
        } else if (strength === 2) {
            passwordStrengthElement.text("Medium difficulty. " + tips);
            passwordStrengthElement.css('color', 'orange');
        } else if (strength === 3) {
            passwordStrengthElement.text("Difficult. " + tips);
            passwordStrengthElement.css('color', 'black');
        } else {
            passwordStrengthElement.text("Extremely difficult. " + tips);
            passwordStrengthElement.css('color', 'green');
        }
    });
});

Подтвердить запрос пароля

ЧИТАТЬ  Фонд Google.org в размере 20 миллионов долларов для искусственного интеллекта и науки

Функция PHP для усиления пароля

function checkPasswordStrength($password) {
  // Initialize variables
  $strength = 0;

  // Check password length
  if (strlen($password) < 8) {
    return "Easy to guess";
  } else {
    $strength += 1;
  }

  // Check for mixed case
  if (preg_match("/[a-z]/", $password) && preg_match("/[A-Z]/", $password)) {
    $strength += 1;
  }

  // Check for numbers
  if (preg_match("/\d/", $password)) {
    $strength += 1;
  }

  // Check for special characters
  if (preg_match("/[^a-zA-Z\d]/", $password)) {
    $strength += 1;
  }

  // Return strength level
  if ($strength < 2) {
    return "Easy to guess";
  } else if ($strength === 2) {
    return "Medium difficulty";
  } else if ($strength === 3) {
    return "Difficult";
  } else {
    return "Extremely difficult";
  }
}

Функция Python для надежности пароля

def check_password_strength(password):
  # Initialize variables
  strength = 0

  # Check password length
  if len(password) < 8:
    return "Easy to guess"
  else:
    strength += 1

  # Check for mixed case
  if any(char.islower() for char in password) and any(char.isupper() for char in password):
    strength += 1

  # Check for numbers
  if any(char.isdigit() for char in password):
    strength += 1

  # Check for special characters
  if any(not char.isalnum() for char in password):
    strength += 1

  # Return strength level
  if strength < 2:
    return "Easy to guess"
  elif strength == 2:
    return "Medium difficulty"
  elif strength == 3:
    return "Difficult"
  else:
    return "Extremely difficult"

Функция С# для надежности пароля

public string CheckPasswordStrength(string password) {
  // Initialize variables
  int strength = 0;

  // Check password length
  if (password.Length < 8) {
    return "Easy to guess";
  } else {
    strength += 1;
  }

  // Check for mixed case
  if (password.Any(char.IsLower) && password.Any(char.IsUpper)) {
    strength += 1;
  }

  // Check for numbers
  if (password.Any(char.IsDigit)) {
    strength += 1;
  }

  // Check for special characters
  if (password.Any(ch => !char.IsLetterOrDigit(ch))) {
    strength += 1;
  }

  // Return strength level
  if (strength < 2) {
    return "Easy to guess";
  } else if (strength == 2) {
    return "Medium difficulty";
  } else if (strength == 3) {
    return "Difficult";
  } else {
    return "Extremely difficult";
  }
}

Функция Java для усиления пароля

public String checkPasswordStrength(String password) {
  // Initialize variables
  int strength = 0;

  // Check password length
  if (password.length() < 8) {
    return "Easy to guess";
  } else {
    strength += 1;
  }

  // Check for mixed case
  if (password.matches(".*[a-z].*") && password.matches(".*[A-Z].*")) {
    strength += 1;
  }

  // Check for numbers
  if (password.matches(".*\\d.*")) {
    strength += 1;
  }

  // Check for special characters
  if (password.matches(".*[^a-zA-Z\\d].*")) {
    strength += 1;
  }

  // Return strength level
  if (strength < 2) {
    return "Easy to guess";
  } else if (strength == 2) {
    return "Medium difficulty";
  } else if (strength == 3) {
    return "Difficult";
  } else {
    return "Extremely difficult";
  }
}

Source

ЧИТАТЬ  5 способов, с помощью которых Open Health Stack помогает разработчикам устранить пробелы в здравоохранении