package core import ( "encoding/base64" "log" "golang.org/x/crypto/bcrypt" ) type UserData struct { Name string Pass string } type PermissionData struct { User string Channel string Read bool Write bool } func HashPass(pass string) (string, error) { hash, err := bcrypt.GenerateFromPassword([]byte(pass), 12) return base64.StdEncoding.EncodeToString(hash), err } func CheckPass(pass, hash string) bool { hashBytes, err := base64.StdEncoding.DecodeString(hash) if err != nil { log.Println("cannot decode base64 string:", err) return false } if bcrypt.CompareHashAndPassword(hashBytes, []byte(pass)) != nil { return false } return true }