Erstellen eines Passwort-Managers in Go
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 die erste Zusage für mein Projekt gemacht, 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
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 Entwicklungsstufen prägen wird.
Erste Features
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.
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:
- 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 < length; i++ { randomIndex, err := rand.Int(rand.Reader, big.NewInt(int64(len(allChars)))) if err != nil { return "", err } password += string(allChars[randomIndex.Int64()]) } return password, nil }
Diese Funktion erstellt ein Passwort, indem sie zufällig Zeichen aus einem vordefinierten Satz auswählt und dabei eine Mischung aus Großbuchstaben, Kleinbuchstaben, Ziffern und Sonderzeichen gewährleistet.
- 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:
- Secure storage of passwords
- Encryption of stored data
- Search and retrieval functionalities
- Password strength analysis
I'm excited about the journey ahead and the challenges it will bring. Building a password manager is not just about coding; it's about understanding security principles, user needs, and creating a tool that people can trust with their sensitive information.
Stay tuned for more updates as this project evolves. I'll be sharing my progress, challenges, and learnings along the way. If you're interested in following along or contributing, feel free to check out the project on GitHub.
svemaraju
/
dost
dost command line password manager written in Go
dost
dost is a CLI password manager written in Go.
Inspired by (Pass)[https://www.passwordstore.org/]
Features
- Generate random passwords of configurable length
- Copy generated passwords to clipboard automatically
- Skip using symbols
Usage
> go build -o dost main.go
Generating password:
> ./dost generate email/vema@example.com Generated Password: );XE,7-Dv?)Aa+&<{V-|pKuq5
Generating password with specified length (default is 25):
> ./dost generate email/vema@example.com 12 Generated Password: si<yJ=5/lEb3
Copy generated password to clipboard without printing:
> ./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
Das obige ist der detaillierte Inhalt vonErstellen eines Passwort-Managers in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Go Language funktioniert gut beim Aufbau effizienter und skalierbarer Systeme. Zu den Vorteilen gehören: 1. hohe Leistung: Kompiliert in den Maschinencode, schnelle Laufgeschwindigkeit; 2. gleichzeitige Programmierung: Vereinfachen Sie Multitasking durch Goroutinen und Kanäle; 3. Einfachheit: präzise Syntax, Reduzierung der Lern- und Wartungskosten; 4. plattform: Unterstützt die plattformübergreifende Kompilierung, einfache Bereitstellung.

Golang ist in Gleichzeitigkeit besser als C, während C bei Rohgeschwindigkeit besser als Golang ist. 1) Golang erreicht durch Goroutine und Kanal eine effiziente Parallelität, die zum Umgang mit einer großen Anzahl von gleichzeitigen Aufgaben geeignet ist. 2) C über Compiler -Optimierung und Standardbibliothek bietet es eine hohe Leistung in der Nähe der Hardware, die für Anwendungen geeignet ist, die eine extreme Optimierung erfordern.

Golang und C haben jeweils ihre eigenen Vorteile bei Leistungswettbewerben: 1) Golang ist für eine hohe Parallelität und schnelle Entwicklung geeignet, und 2) C bietet eine höhere Leistung und eine feinkörnige Kontrolle. Die Auswahl sollte auf Projektanforderungen und Teamtechnologie -Stack basieren.

Golang ist in Bezug auf Leistung und Skalierbarkeit besser als Python. 1) Golangs Kompilierungseigenschaften und effizientes Parallelitätsmodell machen es in hohen Parallelitätsszenarien gut ab. 2) Python wird als interpretierte Sprache langsam ausgeführt, kann aber die Leistung durch Tools wie Cython optimieren.

Golang und Python haben jeweils ihre eigenen Vorteile: Golang ist für hohe Leistung und gleichzeitige Programmierung geeignet, während Python für Datenwissenschaft und Webentwicklung geeignet ist. Golang ist bekannt für sein Parallelitätsmodell und seine effiziente Leistung, während Python für sein Ökosystem für die kurze Syntax und sein reiches Bibliothek bekannt ist.

C eignet sich besser für Szenarien, in denen eine direkte Kontrolle der Hardware -Ressourcen und hohe Leistungsoptimierung erforderlich ist, während Golang besser für Szenarien geeignet ist, in denen eine schnelle Entwicklung und eine hohe Parallelitätsverarbeitung erforderlich sind. 1.Cs Vorteil liegt in den nahezu Hardware-Eigenschaften und hohen Optimierungsfunktionen, die für leistungsstarke Bedürfnisse wie die Spieleentwicklung geeignet sind. 2. Golangs Vorteil liegt in seiner präzisen Syntax und der natürlichen Unterstützung, die für die Entwicklung einer hohen Parallelitätsdienste geeignet ist.

GoimpactsDevelopmentPositivyThroughSpeed, Effizienz und DiasMlitication.1) Geschwindigkeit: Gocompilesquickandrunseffiction, idealforlargeProjects

Die Leistungsunterschiede zwischen Golang und C spiegeln sich hauptsächlich in der Speicherverwaltung, der Kompilierungsoptimierung und der Laufzeiteffizienz wider. 1) Golangs Müllsammlung Mechanismus ist praktisch, kann jedoch die Leistung beeinflussen.
