// You can set your own rules
package main
import (
"fmt"
"unicode"
)
func checkPasswordStrength(password string) string {
length := len(password)
hasLower, hasUpper, hasDigit, specialChar := false, false, false, false
lowuppdig := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
for _, char := range password {
if unicode.IsLower(char) {
hasLower = true
}
if unicode.IsUpper(char) {
hasUpper = true
}
if unicode.IsDigit(char) {
hasDigit = true
}
if !contains(lowuppdig, char) {
specialChar = true
}
}
if hasLower && hasUpper && hasDigit && specialChar && length >= 10 {
return "Strong"
} else if (hasLower || hasUpper) && specialChar && length >= 8 {
return "Medium"
}
return "Weak"
}
func contains(s string, char rune) bool {
for _, c := range s {
if c == char {
return true
}
}
return false
}
func main() {
passwords := []string{"aq1o@p9$XM", "asW!W)(o", "WSDFK!#Q", "n*djskq*", "WE3q#$"}
for _, password := range passwords {
fmt.Println(checkPasswordStrength(password))
}
}
/*
run:
Strong
Medium
Medium
Medium
Weak
*/