Условия слабости пароля формы регистрации Java Swing

Я хочу сделать систему регистрации в java. Он находится в очень хорошем прогрессе. У меня только одна конкретная проблема. Слабость пароля. Я сделал это, пароль должен быть длиннее 8 символов с помощью простого

if (password.getText().length() > 8) { error message }

Я тоже поставил такое условие:

if (... < 8 || !(password.getText().contains("1"))) { error message }

Но с этим условием он принимает пароль, только если ваш пароль, например: asdfghjk1 Итак, я попробовал условие с большим количеством || условие вида !....содержит("2")..|| !..содержит("9")

Но при этих условиях работает только при пароле: 123456789 Но что я действительно хочу сделать, так это пароль длиной более 8 символов, содержащий хотя бы одну заглавную букву и хотя бы одну цифру. Это какой-то способ сделать это? Кстати, я использую качели Java.

Для лучшей практики вы должны использовать JPasswordField

David Kroukamp 13.12.2020 12:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
392
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете сделать это с помощью регулярного выражения, но я не знаю, как это сделать. но это должно работать:

здесь вы подтверждаете свой пароль: Строка passwordString = password.getText();

if (passwordString.Length() > 8 && checkCapital(passwordString) && checkDigit(passwordString)){ valid password }

else { error message }

это checkCapital, я использовал коды ascii:

private static boolean checkCapital(String string) {
    for (char c : string.toCharArray()) {
        int code = (int) c;
        if (code >= 65 && code <= 90) 
            return true;
    }
    return false;
}

это контрольная цифра:

private static boolean checkDigit(String string) {
    for (int i = 0; i < 10; i++) {
        if (string.contains("" + i))
            return true;
    }
    return false;
}
Ответ принят как подходящий

Лучший способ решить эту проблему — использовать Regex. Здесь я привожу для вас пример того, как использовать регулярное выражение для проверки пароля.

import java.util.regex.*; 
class GFG { 
  
    // Function to validate the password. 
    public static boolean
    isValidPassword(String password) 
    { 
  
        // Regex to check valid password. 
        String regex = "^(?=.*[0-9])"
                       + "(?=.*[a-z])(?=.*[A-Z])"
                       + "(?=.*[@#$%^&+=])"
                       + "(?=\\S+$).{8,20}$"; 
  
        // Compile the ReGex 
        Pattern p = Pattern.compile(regex); 
  
        // If the password is empty 
        // return false 
        if (password == null) { 
            return false; 
        } 
  
        // Pattern class contains matcher() method 
        // to find matching between given password 
        // and regular expression. 
        Matcher m = p.matcher(password); 
  
        // Return if the password 
        // matched the ReGex 
        return m.matches(); 
    } 
  
    // Driver Code. 
    public static void main(String args[]) 
    { 
  
        // Test Case 1: 
        String str1 = "Thuans@portal20"; 
        System.out.println(isValidPassword(str1)); 
  
        // Test Case 2: 
        String str2 = "DaoMinhThuan"; 
        System.out.println(isValidPassword(str2)); 
  
        // Test Case 3: 
        String str3 = "Thuan@ portal9"; 
        System.out.println(isValidPassword(str3)); 
  
        // Test Case 4: 
        String str4 = "1234"; 
        System.out.println(isValidPassword(str4)); 
  
        // Test Case 5: 
        String str5 = "Gfg@20"; 
        System.out.println(isValidPassword(str5)); 
  
        // Test Case 6: 
        String str6 = "thuan@portal20"; 
        System.out.println(isValidPassword(str6)); 
    } 
} 

Выход: истинный ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ

Также вы можете обратиться к похожим темам, перейдя по ссылке ниже:

Regex Java для пароля

Другие вопросы по теме