👩💻 تکه کد بررسی قدرت و کیفیت رمزعبور
⚠️ این تکه کد به زبان
⚫️ نوشته شده است.
➖➖➖➖➖➖➖➖➖➖➖
package main
import (
"fmt"
"math"
"regexp"
"strings"
"unicode/utf8"
)
func passStrength(passWord string) string {
hero := 0.0
size := float64(utf8.RuneCountInString(passWord))
freqMap := make(map[rune]float64)
for _, char := range passWord {
freqMap[char]++
}
for _, v := range freqMap {
p := v / size
hero -= p * math.Log2(p)
}
strength := (hero / 3.2) * 100
if strength > 100 {
strength = 100
}
if len(passWord) < 8 {
return "رمزعبور حداقل باید 8 کاراکتر باشد"
}
if !regexp.MustCompile(`[0-9]`).MatchString(passWord) {
return "حداقل باید یک عدد داخل رمزعبور باشد"
}
if !regexp.MustCompile(`[A-Z]`).MatchString(passWord) {
return "حداقل باید یک حرف انگلیسی بزرگ داخل رمزعبور باشد"
}
if !regexp.MustCompile(`[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\>\=\?\@\[\]\{\}\^\_\\~\]\+\$]`).MatchString(passWord) {
return "حداقل باید یک کاراکتر خاص داخل رمزعبور باشد"
}
return fmt.Sprintf("%.0f : قدرت رمزعبور", strength)
}
func main() {
fmt.Println(passStrength("[es51tP}a*s1")) // 100 : قدرت رمزعبور
fmt.Println(passStrength("pas_Test0")) // 92 : قدرت رمزعبور
}
➖➖➖➖➖➖➖➖➖➖➖
💙 @HeroExpert_ir |
کارشناس قهرمان