// 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
*/