package main import ( "errors" "golang.org/x/crypto/bcrypt" ) // 用户结构体 type User struct { Username string PasswordHash []byte } // 模拟用户存储(实际应存入数据库) var users = map[string]User{} // 注册用户 func RegisterUser(username, password string) error { if _, exists := users[username]; exists { return errors.New("用户已存在") } hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { return err } users[username] = User{ Username: username, PasswordHash: hash, } return nil } // 用户登录验证 func AuthenticateUser(username, password string) error { user, exists := users[username] if !exists { return errors.New("用户不存在") } err := bcrypt.CompareHashAndPassword(user.PasswordHash, []byte(password)) if err != nil { return errors.New("密码错误") } return nil }