Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen eines Passwort-Managers in Go: Teil 2

Erstellen eines Passwort-Managers in Go: Teil 2

Barbara Streisand
Barbara StreisandOriginal
2024-09-25 06:19:02742Durchsuche

Willkommen zurück auf unserer Reise zum Erstellen eines Passwort-Managers in Go! In dieser zweiten Folge werden wir die Fortschritte untersuchen, die wir seit unserem ersten Commit gemacht haben. Wir haben neue Funktionen hinzugefügt, die Codestruktur verbessert und Tests implementiert. Lasst uns eintauchen!

Weiterentwicklung der Projektstruktur

Eine der ersten Änderungen, die Sie bemerken werden, ist die verbesserte Projektstruktur. Wir haben unseren Code in mehrere Dateien und Pakete aufgeteilt und dabei die Best Practices von Go befolgt:

dost/
.
├── LICENSE
├── README.md
├── go.mod
├── go.sum
├── internal
│   ├── internal_test.go
│   └── passgen.go
└── main.go

Diese Struktur ermöglicht eine bessere Organisation und Wartbarkeit, wenn unser Projekt wächst.

Erweiterte Befehlszeilenschnittstelle

Wir haben unsere CLI erheblich verbessert und sie flexibler und benutzerfreundlicher gemacht. Hier ist ein Ausschnitt aus unserem main.go:

func main() {
    generateCmd := flag.NewFlagSet("generate", flag.ExitOnError)
    flag.Parse()

    switch os.Args[1] {
    case "generate":
        internal.Generate(generateCmd)
    }
}

Dieses Setup ermöglicht Unterbefehle und unterstützt derzeit den Befehl „generate“. Benutzer können jetzt wie folgt mit unserem Tool interagieren:

go run main.go generate email/reachme@example.com 15

Anpassbare Passwortgenerierung

Wir haben Optionen zum Anpassen der Passwortgenerierung hinzugefügt. Benutzer können jetzt die Passwortlänge angeben und Sonderzeichen ausschließen:

func Generate(generateFlags *flag.FlagSet) {
    generateFlags.BoolVar(&noSymbols, "n", false, "Skip symbols while generating password")
    generateFlags.BoolVar(&copyToClipBoard, "c", false, "Copy to clipboard.")
    generateFlags.Parse(os.Args[2:])
    passwordLength := 25
    // ... (code to parse custom length)

    password, err := generatePassword(passwordLength, noSymbols)
    // ... (code to handle password output)
}

Mit dieser Funktion können Benutzer Flags wie -n zum Ausschließen von Symbolen und -c verwenden, um das Passwort in die Zwischenablage zu kopieren, anstatt es anzuzeigen.

Verbesserter Algorithmus zur Passwortgenerierung

Wir haben unsere Funktion zur Passwortgenerierung verfeinert, um die neuen Anpassungsoptionen zu berücksichtigen:

func generatePassword(length int, noSymbols bool) (string, error) {
    const (
        uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
        digits           = "0123456789"
        specialChars     = "!@#$%^&*()-_=+[]{}|;:'\",.a8093152e673feb7aba1828c43532094/?"
    )

    allChars := uppercaseLetters + lowercaseLetters + digits
    if !noSymbols {
        allChars += specialChars
    }

    var password string
    for i := 0; i 1b3349b0a69f6df79cd4bc1c63c47256 0 {
        t.Errorf("Special character was missing in %d / 10000 instances.", splCharMissing)
    }
}

Diese Tests prüfen die korrekte Passwortlänge und die Einbeziehung von Sonderzeichen. Interessanterweise hat unser Sonderzeichentest einen Bereich mit Verbesserungspotenzial aufgedeckt: Von 10.000 generierten Passwörtern enthielten 234 keine Sonderzeichen. Dies gibt uns eine klare Richtung für unsere nächste Verfeinerung.

Was kommt als nächstes?

Obwohl wir erhebliche Fortschritte gemacht haben, gibt es noch Raum für Verbesserungen:

  1. Verfeinern Sie den Algorithmus zur Passwortgenerierung, um eine konsistente Einbeziehung von Sonderzeichen sicherzustellen.
  2. Passwortspeicherfunktion implementieren.
  3. Verschlüsselung für gespeicherte Passwörter hinzufügen.
  4. Such- und Abruffunktionen entwickeln.

Bleiben Sie gespannt auf den nächsten Teil unserer Serie, in dem wir uns diesen Herausforderungen stellen und unseren Passwort-Manager weiterentwickeln!

Denken Sie daran, dass der vollständige Quellcode auf GitHub verfügbar ist. Fühlen Sie sich frei, das Projekt zu klonen, zu forken und dazu beizutragen. Ihr Feedback und Ihre Beiträge sind immer willkommen!

Viel Spaß beim Codieren und bleiben Sie sicher! ??

Building a Password Manager in Go: Part 2 svemaraju / dost

dost-Befehlszeilen-Passwort-Manager, geschrieben in Go

dost

dost ist ein in Go geschriebener CLI-Passwort-Manager.

Inspiriert von (Pass)[https://www.passwordstore.org/]

Funktionen

  • Zufällige Passwörter konfigurierbarer Länge generieren
  • Generierte Passwörter automatisch in die Zwischenablage kopieren
  • Überspringen Sie die Verwendung von Symbolen

Verwendung

> go build -o dost main.go
Vollbildmodus aufrufen Vollbildmodus verlassen

Generating password:

> ./dost generate -c email/vema@example.com 
Copied to clipboard! ✅

Avoid symbols for generating passwords:

> ./dost generate -n email/vema@example.com 
Generated Password: E2UST}^{Ac[Fb&D|cD%;Eij>H

Under development

  • Insert a new password manually
  • Show an existing password
  • List all entries
  • Password storage
  • GPG Key based encryption

License

MIT




View on GitHub


Das obige ist der detaillierte Inhalt vonErstellen eines Passwort-Managers in Go: Teil 2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn