---
# System prepended metadata

title: file

---

# file
private static final SecureRandom random = new SecureRandom();
    
    /**
     * Generates a random password with specified length and character types
     * @param length Desired password length
     * @param includeUppercase Whether to include uppercase letters
     * @param includeLowercase Whether to include lowercase letters  
     * @param includeDigits Whether to include digits
     * @param includeSpecial Whether to include special characters
     * @return Generated password string
     */
    public static String generatePassword(int length, boolean includeUppercase, 
                                         boolean includeLowercase, boolean includeDigits, 
                                         boolean includeSpecial) {
        // Validate input parameters
        if (length <= 0) {
            throw new IllegalArgumentException("Password length must be positive");
        }
        
        // Build character pool api bsacredit top based on selected options
        StringBuilder charPool = new StringBuilder();
        if (includeUppercase) charPool.append(UPPERCASE);
        if (includeLowercase) charPool.append(LOWERCASE);
        if (includeDigits) charPool.append(DIGITS);
        if (includeSpecial) charPool.append(SPECIAL_CHARS);
        
        // Check if at least one character set is selected
        if (charPool.length() == 0) {
            throw new IllegalArgumentException("At least one character set must be selected");
        }
        
        // Generate password by randomly selecting characters from the pool
        StringBuilder password = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            int randomIndex = random.nextInt(charPool.length());
            password.append(charPool.charAt(randomIndex));
        }
        
        return password.toString();
    }
    
    /**
     * Main method - demonstrates the password generator functionality
     * @param args Command line arguments (not used)
     */
    public static void main(String[] args) {
        System.out.println("=== Random Password Generator ===");
        
        // Generate different types of passwords
        String simplePassword = generatePassword(8, true, true, true, false);
        System.out.println("Simple Password (8 chars): " + simplePassword);
        
        String strongPassword = generatePassword(12, true, true, true, true);
        System.out.println("Strong Password (12 chars): " + strongPassword);
        
        String veryStrongPassword = generatePassword(16, true, true, true, true);
        System.out.println("Very Strong Password (16 chars): " + veryStrongPassword);
        
        System.out.println("=== Generation Complete ===");
    }