„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erstellen eines Passwort-Managers in Go

Erstellen eines Passwort-Managers in Go

Veröffentlicht am 08.11.2024
Durchsuche:369

Als Softwareentwickler war ich schon immer von der Schnittstelle zwischen Sicherheit und Benutzerfreundlichkeit fasziniert. Vor kurzem habe ich beschlossen, ein spannendes Projekt in Angriff zu nehmen: die Erstellung eines Befehlszeilen-Passwort-Managers mit Go. Ich möchte den Beginn dieser Reise mit Ihnen teilen, beginnend mit dem allerersten Commit.

Die Genesis

Am 27. November 2023 habe ich den ersten Commit für mein Projekt vorgenommen, das ich „dost“ (Freund auf Hindi, was seine Rolle als hilfreicher Begleiter bei der Passwortverwaltung widerspiegelt) genannt habe. Dieser erste Schritt ist zwar klein, legt aber den Grundstein für ein hoffentlich robustes und benutzerfreundliches Tool.

Inspiration und Vision

Building a Password Manager in Go

Als ich dieses Projekt in Angriff nahm, ließ ich mich vom beliebten Befehlszeilen-Passwort-Manager Pass inspirieren. Die Einfachheit und Effektivität von Pass erregte meine Aufmerksamkeit und ich beschloss, seine API als Vorlage für die Erstellung meines eigenen Passwort-Managers in Go zu verwenden.

Das Eintauchen in den Quellcode von Pass war eine augenöffnende Erfahrung. Ich war fasziniert, als ich herausfand, dass die gesamte Funktionalität dieses weit verbreiteten Tools in einem umfassenden Bash-Skript gekapselt ist. Diese elegante Einfachheit bewundere ich und hoffe, sie in meinem eigenen Projekt nachzuahmen, wenn auch unter Nutzung der Stärken von Go.

Durch das Studium von pass habe ich wertvolle Einblicke in die wesentlichen Funktionen eines Befehlszeilen-Passwort-Managers und die Benutzererfahrung gewonnen, die er bieten sollte. Während ich „dost“ weiterentwickle, werde ich diese Lektionen im Hinterkopf behalten, mit dem Ziel, ein Tool zu schaffen, das die Einfachheit von Pass mit der Leistung und den plattformübergreifenden Kompatibilitätsvorteilen von Go verbindet.

Diese Erkundung hat nicht nur einen Fahrplan für die zu implementierenden Funktionen geliefert, sondern auch meinen Glauben an die Leistungsfähigkeit gut gestalteter, zielgerichteter Tools gestärkt. Ich bin gespannt, wie diese Inspiration die Entwicklung von „dost“ in den kommenden Entwicklungsphasen prägen wird.

Erste Features

Der erste Commit konzentrierte sich auf zwei Kernfunktionen:

  1. Passwortgenerierung: Ich habe einen einfachen Passwortgenerator implementiert, der es Benutzern ermöglicht, die gewünschte Passwortlänge anzugeben. Diese Funktion zielt darauf ab, sichere, zufällige Passwörter zu erstellen, die auf verschiedene Sicherheitsanforderungen zugeschnitten sind.

  2. Zwischenablage-Integration: Um die Benutzererfahrung zu verbessern, habe ich dafür gesorgt, dass das generierte Passwort automatisch in die Zwischenablage kopiert wird. Diese kleine, aber entscheidende Funktion spart Zeit und verringert das Risiko von Transkriptionsfehlern.

Technische Einblicke

Lassen Sie uns auf einige der technischen Aspekte dieser ersten Iteration eingehen:

  • Go-Version: Das Projekt wird mit Go 1.21.0 erstellt und nutzt die Einfachheit und Effizienz der Sprache.
  • Externe Abhängigkeiten: Ich verwende das Paket github.com/atotto/clipboard, um Zwischenablagevorgänge über verschiedene Betriebssysteme hinweg nahtlos abzuwickeln.
  • Zufallsgenerierung: Die Passwortgenerierung nutzt das Crypto/Rand-Paket von Go für die sichere Zufallszahlengenerierung, die für die Erstellung unvorhersehbarer und sicherer Passwörter von entscheidender Bedeutung ist.
  • Zeichensatz: Der Passwortgenerator enthält Groß- und Kleinbuchstaben, Ziffern und eine Vielzahl von Sonderzeichen, um die Komplexität zu gewährleisten.

Codeausschnitte

Sehen wir uns einige wichtige Teile der Implementierung an:

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

    allChars := uppercaseLetters   lowercaseLetters   digits   specialChars

    var password string
    for i := 0; i 


Diese Funktion erstellt ein Passwort durch zufällige Auswahl von Zeichen aus einem vordefinierten Satz und stellt so eine Mischung aus Großbuchstaben, Kleinbuchstaben, Ziffern und Sonderzeichen sicher.

  1. Zwischenablage-Integration:
func writeToClipboard(text string) error {
    return clipboard.WriteAll(text)
}

Diese einfache Funktion nutzt das Clipboard-Paket, um das generierte Passwort in die Systemzwischenablage zu schreiben.

  1. Hauptfunktion:
func main() {
    passwordLength := flag.Int("length", 12, "length of your password")
    flag.Parse()

    password, err1 := generatePassword(*passwordLength)
    if err1 != nil {
        fmt.Println("Error generating password:", err1)
        return
    }

    fmt.Println("Generated Password:", password)

    err2 := writeToClipboard(password)
    if err2 != nil {
        fmt.Println("Error writing to clipboard:", err2)
        os.Exit(1)
    }

    fmt.Println("Copied to clipboard! ✅\n")
}

Die Hauptfunktion verbindet alles miteinander. Es verwendet das Flag-Paket von Go, um Benutzern die Angabe der Passwortlänge zu ermöglichen, generiert das Passwort und kopiert es in die Zwischenablage.

Befehlszeilenschnittstelle

Wie Sie in der Hauptfunktion sehen können, habe ich eine einfache CLI mithilfe des Flag-Pakets von Go implementiert. Benutzer können die gewünschte Passwortlänge mithilfe des Flags -length angeben. Wenn nicht angegeben, beträgt der Standardwert 12 Zeichen.

Blick nach vorn

Dieses erste Commit ist erst der Anfang. Während ich diesen Passwort-Manager weiterentwickle, plane ich, Funktionen hinzuzufügen wie:

  • Sichere Speicherung von Passwörtern
  • Verschlüsselung gespeicherter Daten
  • Such- und Abruffunktionen
  • Analyse der Passwortstärke

Ich bin gespannt auf die bevorstehende Reise und die Herausforderungen, die sie mit sich bringen wird. Beim Erstellen eines Passwort-Managers geht es nicht nur ums Programmieren; Es geht darum, Sicherheitsprinzipien und Benutzerbedürfnisse zu verstehen und ein Tool zu entwickeln, dem die Menschen ihre sensiblen Informationen anvertrauen können.

Seien Sie gespannt auf weitere Updates, während sich dieses Projekt weiterentwickelt. Ich werde unterwegs meine Fortschritte, Herausforderungen und Erkenntnisse teilen. Wenn Sie daran interessiert sind, mitzumachen oder einen Beitrag zu leisten, schauen Sie sich das Projekt gerne auf GitHub an.

Building a Password Manager in Go 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/]

Merkmale

  • Zufällige Passwörter konfigurierbarer Länge generieren
  • Generierte Passwörter automatisch in die Zwischenablage kopieren
  • Mit Symbolen überspringen

Verwendung

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

Passwort wird generiert:

> ./dost generate email/[email protected]
Generated Password: );XE,7-Dv?)Aa &

Passwort mit angegebener Länge wird generiert (Standard ist 25):

> ./dost generate email/[email protected] 12
Generated Password: si

Generiertes Passwort ohne Ausdruck in die Zwischenablage kopieren:

> ./dost generate -c email/[email protected] 
Copied to clipboard! ✅

Vermeiden Sie Symbole zum Generieren von Passwörtern:

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

In Entwicklung

  • Geben Sie manuell ein neues Passwort ein
  • Vorhandenes Passwort anzeigen
  • Alle Einträge auflisten
  • Passwortspeicher
  • GPG-Schlüsselbasierte Verschlüsselung

Lizenz

MIT




Auf GitHub ansehen


Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/svemaraju/building-a-password-manager-in-go-31jo?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3