package handlers import ( "encoding/json" "net/http" "golang.org/x/crypto/bcrypt" ) type HashRequest struct { Password string `json:"password"` } type HashResponse struct { Hash string `json:"hash"` } func GenerateHash(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } var req HashRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid request body", http.StatusBadRequest) return } hash, err := bcrypt.GenerateFromPassword([]byte(req.Password), bcrypt.DefaultCost) if err != nil { http.Error(w, "Failed to generate hash", http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(HashResponse{Hash: string(hash)}) }