package main

import (
	"fmt"
	"golang.org/x/crypto/bcrypt"
)

func main() {
	password := "admin123"
	hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	hashStr := string(hash)
	fmt.Printf("Generated hash for '%s':\n%s\n\n", password, hashStr)

	// Test verification
	err = bcrypt.CompareHashAndPassword(hash, []byte(password))
	if err != nil {
		fmt.Println("Verification FAILED:", err)
	} else {
		fmt.Println("Verification PASSED")
	}

	// Test with known hash
	knownHash := "$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcg7b3XeKeUxWdeS86E36gBS43O"
	fmt.Printf("\nTesting known hash:\n%s\n", knownHash)
	err = bcrypt.CompareHashAndPassword([]byte(knownHash), []byte(password))
	if err != nil {
		fmt.Println("Known hash verification FAILED:", err)
	} else {
		fmt.Println("Known hash verification PASSED")
	}
}
