How to check whether a given password is strong, medium, or weak in Kotlin

1 Answer

0 votes
// You can set your own rules

class PasswordStrengthChecker {

    fun checkPasswordStrength(password: String): String {
        val length = password.length
        var hasLower = false
        var hasUpper = false
        var hasDigit = false
        var specialChar = false

        val lowuppdig = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

        for (i in 0 until length) {
            when {
                password[i].isLowerCase() -> hasLower = true
                password[i].isUpperCase() -> hasUpper = true
                password[i].isDigit() -> hasDigit = true
                !lowuppdig.contains(password[i]) -> specialChar = true
            }
        }

        return when {
            hasLower && hasUpper && hasDigit && specialChar && length >= 10 -> "Strong"
            (hasLower || hasUpper) && specialChar && length >= 8 -> "Medium"
            else -> "Weak"
        }
    }

    companion object {
        @JvmStatic
        fun main(args: Array<String>) {
            val checker = PasswordStrengthChecker()
            val passwords = listOf("a#1o@p9!XM", "asW!W)(o", "WSDFK!#Q", "n*djskq*", "WE3q#$")
            for (password in passwords) {
                println(checker.checkPasswordStrength(password))
            }
        }
    }
}



/*
run:
  
Strong
Medium
Medium
Medium
Weak
  
*/

 



answered Oct 23, 2024 by avibootz
...