"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > गो में पासवर्ड मैनेजर बनाना: भाग 2

गो में पासवर्ड मैनेजर बनाना: भाग 2

2024-11-01 को प्रकाशित
ब्राउज़ करें:410

गो में पासवर्ड मैनेजर बनाने की हमारी यात्रा में आपका फिर से स्वागत है! इस दूसरी किस्त में, हम अपनी प्रारंभिक प्रतिबद्धता के बाद से हमने जो प्रगति की है उसका पता लगाएंगे। हमने नई सुविधाएँ जोड़ी हैं, कोड संरचना में सुधार किया है और परीक्षण लागू किया है। आइए गोता लगाएँ!

परियोजना संरचना का विकास

पहले परिवर्तनों में से एक जो आप देखेंगे वह बेहतर परियोजना संरचना है। हमने गो की सर्वोत्तम प्रथाओं का पालन करते हुए अपने कोड को कई फाइलों और पैकेजों में अलग कर दिया है:

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

जैसे-जैसे हमारा प्रोजेक्ट बढ़ता है, यह संरचना बेहतर संगठन और रखरखाव की अनुमति देती है।

उन्नत कमांड-लाइन इंटरफ़ेस

हमने अपनी सीएलआई में उल्लेखनीय सुधार किया है, जिससे यह अधिक लचीला और उपयोगकर्ता-अनुकूल बन गया है। यहां हमारे main.go से एक स्निपेट है:

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

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

यह सेटअप उपकमांड की अनुमति देता है, वर्तमान में जेनरेट कमांड का समर्थन करता है। उपयोगकर्ता अब हमारे टूल के साथ इस प्रकार इंटरैक्ट कर सकते हैं:

go run main.go generate email/[email protected] 15

अनुकूलन योग्य पासवर्ड जनरेशन

हमने पासवर्ड जेनरेशन को अनुकूलित करने के लिए विकल्प जोड़े हैं। उपयोगकर्ता अब पासवर्ड की लंबाई निर्दिष्ट कर सकते हैं और विशेष वर्णों को बाहर करना चुन सकते हैं:

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)
}

यह फ़ंक्शन उपयोगकर्ताओं को प्रतीकों को बाहर करने के लिए -n और पासवर्ड को प्रदर्शित करने के बजाय क्लिपबोर्ड पर कॉपी करने के लिए -c जैसे फ़्लैग का उपयोग करने की अनुमति देता है।

बेहतर पासवर्ड जनरेशन एल्गोरिदम

हमने नए अनुकूलन विकल्पों को संभालने के लिए अपने पासवर्ड जनरेशन फ़ंक्शन को परिष्कृत किया है:

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

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

    var password string
    for i := 0; i 


यह फ़ंक्शन अब noSymbols ध्वज का सम्मान करता है, जो अधिक लचीले पासवर्ड निर्माण की अनुमति देता है।

परीक्षण लागू करना

हमने परीक्षण लागू करके अपने कोड की विश्वसनीयता सुनिश्चित करने की दिशा में एक महत्वपूर्ण कदम उठाया है। यहां हमारी परीक्षण फ़ाइल से एक स्निपेट है:

func TestPasswordLength(t *testing.T) {
    password, err := generatePassword(10, true)
    if err != nil {
        t.Errorf("Expected no error, got %v", err)
    } else {
        if len(password) != 10 {
            t.Errorf("Expected 10 character password, got %d", len(password))
        }
    }
}

func TestSpecialCharacter10K(t *testing.T) {
    splCharMissing := 0
    for i := 1; i  0 {
        t.Errorf("Special character was missing in %d / 10000 instances.", splCharMissing)
    }
}

ये परीक्षण सही पासवर्ड लंबाई और विशेष वर्णों के समावेश की जांच करते हैं। दिलचस्प बात यह है कि हमारे विशेष चरित्र परीक्षण से सुधार की गुंजाइश का पता चला: 10,000 उत्पन्न पासवर्डों में से 234 में विशेष वर्ण नहीं थे। यह हमें हमारे अगले शोधन के लिए एक स्पष्ट दिशा देता है।

आगे क्या होगा?

हालाँकि हमने महत्वपूर्ण प्रगति की है, फिर भी सुधार की गुंजाइश है:

  1. विशेष वर्णों को लगातार शामिल करने को सुनिश्चित करने के लिए पासवर्ड जनरेशन एल्गोरिदम को परिष्कृत करें।
  2. पासवर्ड भंडारण कार्यक्षमता लागू करें।
  3. संगृहीत पासवर्ड के लिए एन्क्रिप्शन जोड़ें।
  4. खोज और पुनर्प्राप्ति सुविधाएं विकसित करें।

हमारी श्रृंखला के अगले भाग के लिए बने रहें, जहां हम इन चुनौतियों से निपटेंगे और अपना पासवर्ड मैनेजर विकसित करना जारी रखेंगे!

याद रखें, पूरा स्रोत कोड GitHub पर उपलब्ध है। क्लोन करने, फोर्क करने और परियोजना में योगदान करने के लिए स्वतंत्र महसूस करें। आपकी प्रतिक्रिया और योगदान का हमेशा स्वागत है!

कोडिंग का आनंद लें, और सुरक्षित रहें! ??

Building a Password Manager in Go: Part 2 स्वेमाराजू / दोस्त

दोस्त कमांड लाइन पासवर्ड मैनेजर गो में लिखा है

दोस्त

dost एक CLI पासवर्ड मैनेजर है जो Go में लिखा गया है।

(पास) से प्रेरित[https://www.passwordstore.org/]

विशेषताएँ

  • कॉन्फ़िगर करने योग्य लंबाई के यादृच्छिक पासवर्ड उत्पन्न करें
  • जेनरेट किए गए पासवर्ड को स्वचालित रूप से क्लिपबोर्ड पर कॉपी करें
  • प्रतीकों का उपयोग करना छोड़ें

उपयोग

> go build -o dost main.go
पूर्णस्क्रीन मोड दर्ज करें फुलस्क्रीन मोड से बाहर निकलें

पासवर्ड जनरेट करना:

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

निर्दिष्ट लंबाई के साथ पासवर्ड बनाना (डिफ़ॉल्ट 25 है):

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

जनरेटेड पासवर्ड को बिना प्रिंट किए क्लिपबोर्ड पर कॉपी करें:

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

पासवर्ड जनरेट करने के लिए प्रतीकों से बचें:

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

अल्प विकास

  • मैन्युअल रूप से नया पासवर्ड डालें
  • मौजूदा पासवर्ड दिखाएं
  • सभी प्रविष्टियों की सूची बनाएं
  • पासवर्ड भंडारण
  • जीपीजी कुंजी आधारित एन्क्रिप्शन

लाइसेंस

एमआईटी




GitHub पर देखें


विज्ञप्ति वक्तव्य इस लेख को इस पर पुन: प्रस्तुत किया गया है: https://dev.to/svemaraju/building-a-password-manager-n-go-part-2-5adf?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3