1diff --git a/main.go b/main.go
2index 18b73ff0fd202e715f3f6721bdc26d36fcebee0a..b891c8820f0c8bfd61b4d58dbaa6460d2531796e 100644
3--- a/main.go
4+++ b/main.go
5@@ -3,10 +3,13 @@
6 import (
7 "context"
8 "flag"
9+ "fmt"
10 "log/slog"
11 "os"
12 "os/signal"
13 "time"
14+
15+ "golang.org/x/crypto/bcrypt"
16
17 "git.gabrielgio.me/cerrado/pkg/config"
18 "git.gabrielgio.me/cerrado/pkg/handler"
19@@ -17,10 +20,30 @@
20 func main() {
21 ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill)
22 defer stop()
23+
24+ if len(os.Args) == 4 && os.Args[1] == "hash" {
25+ err := hash(os.Args[2], os.Args[3])
26+ if err != nil {
27+ slog.Error("Error", "error", err)
28+ os.Exit(1)
29+ }
30+ return
31+ }
32+
33 if err := run(ctx); err != nil {
34 slog.Error("Error", "error", err)
35 os.Exit(1)
36 }
37+}
38+
39+func hash(username string, password string) error {
40+ passphrase := fmt.Sprintf("%s:%s", username, password)
41+ bytes, err := bcrypt.GenerateFromPassword([]byte(passphrase), 14)
42+ if err != nil {
43+ return err
44+ }
45+ fmt.Println(string(bytes))
46+ return nil
47 }
48
49 func run(ctx context.Context) error {