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.
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.
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.
Der erste Commit konzentrierte sich auf zwei Kernfunktionen:
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.
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.
Lassen Sie uns auf einige der technischen Aspekte dieser ersten Iteration eingehen:
Sehen wir uns einige wichtige Teile der Implementierung an:
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; iDiese 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.
- 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.
- 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:
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.
dost ist ein in Go geschriebener CLI-Passwort-Manager.
Inspiriert von (Pass)[https://www.passwordstore.org/]
> go build -o dost main.go
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
MIT
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