package utils import ( "crypto/md5" // #nosec "encoding/hex" "math/rand" "os" "regexp" "time" "unsafe" ) const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" const ( letterIdxBits = 6 // 6 bits to represent a letter index letterIdxMask = 1<= 0; { if remain == 0 { cache, remain = src.Int63(), letterIdxMax } if idx := int(cache & letterIdxMask); idx < len(letterBytes) { b[i] = letterBytes[idx] i-- } cache >>= letterIdxBits remain-- } return *(*string)(unsafe.Pointer(&b)) //#nosec } func MD5(plantext string) string { hash := md5.New() // #nosec hash.Write([]byte(plantext)) return hex.EncodeToString(hash.Sum(nil)) } func IsWindows() bool { return os.PathSeparator == '\\' && os.PathListSeparator == ';' } var ipv4Re = regexp.MustCompile(`(\d*\.).*(\.\d*)`) func ipv4Desensitize(ipv4Addr string) string { return ipv4Re.ReplaceAllString(ipv4Addr, "$1****$2") } var ipv6Re = regexp.MustCompile(`(\w*:\w*:).*(:\w*:\w*)`) func ipv6Desensitize(ipv6Addr string) string { return ipv6Re.ReplaceAllString(ipv6Addr, "$1****$2") } func IPDesensitize(ipAddr string) string { ipAddr = ipv4Desensitize(ipAddr) ipAddr = ipv6Desensitize(ipAddr) return ipAddr }