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

डिजिटल हस्ताक्षर: आपका क्रिप्टोग्राफ़िक जॉन हैनकॉक, गो क्रिप्टो 6

2025-01-20 को प्रकाशित
ब्राउज़ करें:101

Digital Signatures: Your Cryptographic John Hancock, Go Crypto 6

अरे, क्रिप्टो चैंपियन! डिजिटल हस्ताक्षर की दुनिया में उतरने के लिए तैयार हैं? इन्हें अपने डिजिटल ऑटोग्राफ के रूप में सोचें - यह साबित करने का एक तरीका कि आप वास्तव में डिजिटल दुनिया में हैं, और यह कि आपके संदेश के साथ छेड़छाड़ नहीं की गई है। आइए जानें कि कैसे गो इन अविस्मरणीय डिजिटल जॉन हैनकॉक्स को बनाने में हमारी मदद करता है!

आरएसए हस्ताक्षर: क्लासिक ऑटोग्राफ

सबसे पहले, हमें आरएसए हस्ताक्षर मिल गए हैं। यह वास्तव में एक फैंसी, अविस्मरणीय पेन से किसी दस्तावेज़ पर हस्ताक्षर करने जैसा है।

import (
    "crypto"
    "crypto/rand"
    "crypto/rsa"
    "crypto/sha256"
    "fmt"
)

func main() {
    // Let's create our special signing pen (RSA key pair)
    privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
    if err != nil {
        panic("Oops! Our pen ran out of ink.")
    }
    publicKey := &privateKey.PublicKey

    // Our important message
    message := []byte("I solemnly swear that I am up to no good.")

    // Let's create a fingerprint of our message
    hash := sha256.Sum256(message)

    // Time to sign!
    signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey, crypto.SHA256, hash[:])
    if err != nil {
        panic("Our hand cramped while signing!")
    }

    fmt.Printf("Our RSA signature: %x\n", signature)

    // Now, let's verify our signature
    err = rsa.VerifyPKCS1v15(publicKey, crypto.SHA256, hash[:], signature)
    if err != nil {
        fmt.Println("Uh-oh, someone forged our signature!")
    } else {
        fmt.Println("Signature checks out. Mischief managed!")
    }
}

ईसीडीएसए हस्ताक्षर: सुडौल ऑटोग्राफ

इसके बाद, हमारे पास ईसीडीएसए हस्ताक्षर हैं। यह आरएसए के कूलर, अधिक कुशल चचेरे भाई की तरह है - समान स्तर की सुरक्षा के साथ छोटे हस्ताक्षर।

import (
    "crypto/ecdsa"
    "crypto/elliptic"
    "crypto/rand"
    "crypto/sha256"
    "fmt"
    "math/big"
)

func main() {
    // Let's create our curvy signing pen
    privateKey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
    if err != nil {
        panic("Our curvy pen got a bit too curvy!")
    }
    publicKey := &privateKey.PublicKey

    // Our important message
    message := []byte("Elliptic curves are mathematically delicious!")

    // Create a fingerprint of our message
    hash := sha256.Sum256(message)

    // Time to sign with our curvy pen!
    r, s, err := ecdsa.Sign(rand.Reader, privateKey, hash[:])
    if err != nil {
        panic("Our hand slipped while signing these curves!")
    }

    signature := append(r.Bytes(), s.Bytes()...)
    fmt.Printf("Our curvy ECDSA signature: %x\n", signature)

    // Let's verify our curvy signature
    r = new(big.Int).SetBytes(signature[:len(signature)/2])
    s = new(big.Int).SetBytes(signature[len(signature)/2:])
    valid := ecdsa.Verify(publicKey, hash[:], r, s)
    fmt.Printf("Is our curvy signature valid? %v\n", valid)
}

Ed25519 हस्ताक्षर: स्पीड दानव ऑटोग्राफ

आखिरकार, हमारे पास Ed25519 हस्ताक्षर हैं। ये डिजिटल हस्ताक्षर की स्पोर्ट्स कार की तरह हैं - तेज़ और सुरक्षित।

import (
    "crypto/ed25519"
    "crypto/rand"
    "fmt"
)

func main() {
    // Let's create our speedy signing pen
    publicKey, privateKey, err := ed25519.GenerateKey(rand.Reader)
    if err != nil {
        panic("Our speedy pen got a speeding ticket!")
    }

    // Our important message
    message := []byte("Speed is my middle name!")

    // Time to sign at lightning speed!
    signature := ed25519.Sign(privateKey, message)

    fmt.Printf("Our speedy Ed25519 signature: %x\n", signature)

    // Let's verify our speedy signature
    valid := ed25519.Verify(publicKey, message, signature)
    fmt.Printf("Is our speedy signature valid? %v\n", valid)
}

अपना आदर्श हस्ताक्षर चुनना

अब, आप सोच रहे होंगे, "मुझे किस हस्ताक्षर का उपयोग करना चाहिए?" खैर, यह आपकी आवश्यकताओं पर निर्भर करता है:

  1. आरएसए: यह हस्ताक्षर के स्विस सेना चाकू की तरह है। व्यापक रूप से समर्थित, लेकिन हस्ताक्षर थोड़े मोटे हैं।
  2. ईसीडीएसए: यह बीच का रास्ता है। आरएसए की तुलना में छोटे हस्ताक्षर, अभी भी व्यापक रूप से समर्थित हैं।
  3. Ed25519: ब्लॉक पर नया बच्चा। बहुत तेज़, छोटे हस्ताक्षर, लेकिन हो सकता है कि अभी तक हर जगह समर्थित न हो।

डिजिटल हस्ताक्षर के सुनहरे नियम

अब जब आप एक हस्ताक्षर कलाकार हैं, तो ध्यान रखने योग्य कुछ सुनहरे नियम यहां दिए गए हैं:

  1. रैंडमनेस कुंजी है: हस्ताक्षर से संबंधित किसी भी चीज़ के लिए हमेशा क्रिप्टो/रैंड का उपयोग करें। पूर्वानुमानित यादृच्छिकता हर बार एक ही हस्ताक्षर का उपयोग करने जैसा है - अच्छा नहीं!

  2. हस्ताक्षर करने से पहले हैश करें: Ed25519 को छोड़कर, हस्ताक्षर करने से पहले हमेशा अपना संदेश हैश करें। यह आपके संदेश का एक अद्वितीय फ़िंगरप्रिंट बनाने जैसा है।

  3. आकार मायने रखता है: आरएसए के लिए कम से कम 2048 बिट्स, ईसीडीएसए के लिए 256 बिट्स का उपयोग करें, और एड25519 हमेशा 256 बिट्स है।

  4. अपने पेन सुरक्षित रखें: अपनी निजी चाबियों को सुरक्षित रखें जैसे आप अपनी सबसे कीमती संपत्ति की रक्षा करते हैं। चोरी हुई हस्ताक्षर कुंजी ऐसा है जैसे कोई आपकी पहचान चुरा रहा हो!

  5. अपने सत्यापनकर्ताओं को सत्यापित करें: सुनिश्चित करें कि हस्ताक्षर सत्यापित करने के लिए आप जिन सार्वजनिक कुंजियों का उपयोग कर रहे हैं वे वैध हैं। एक नकली सार्वजनिक कुंजी आपको नकली हस्ताक्षर पर भरोसा दिला सकती है!

  6. जब संभव हो तो मानकीकरण करें: यदि आपको अन्य प्रणालियों के साथ अच्छा खेलना है तो JSON वेब सिग्नेचर (JWS) जैसे प्रारूपों का उपयोग करने पर विचार करें।

  7. चुपके हमलों से सावधान रहें: उच्च-सुरक्षा परिदृश्यों में, साइड-चैनल हमलों से सावधान रहें। वे ऐसे हैं जैसे कोई आपके हस्ताक्षर करते समय आपके कंधे की ओर देख रहा हो।

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

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

आगे, हम देखेंगे कि गो टीएलएस और एक्स.509 प्रमाणपत्रों को कैसे संभालता है। यह सीखने जैसा है कि डिजिटल आईडी कार्ड कैसे बनाएं और सत्यापित करें - इंटरनेट पर सुरक्षित संचार के लिए आवश्यक!

याद रखें, क्रिप्टोग्राफी की दुनिया में, इन बुनियादी बातों को समझना महत्वपूर्ण है। यह अपना हस्ताक्षर लिखना सीखने जैसा है - डिजिटल युग में एक मौलिक कौशल। इनमें महारत हासिल करें, और आप गो में सुरक्षित, प्रमाणित एप्लिकेशन बनाने की दिशा में आगे बढ़ेंगे।

तो, यदि आप एक सरल दस्तावेज़ हस्ताक्षर प्रणाली लागू करने का प्रयास करें तो कैसा रहेगा? या शायद एक ऐसा प्रोग्राम बनाएं जो डिजिटल हस्ताक्षरों का उपयोग करके सॉफ़्टवेयर अपडेट को सत्यापित करता हो? अविस्मरणीय डिजिटल ऑटोग्राफ की दुनिया आपकी उंगलियों पर है! हैप्पी कोडिंग, क्रिप्टो चैंपियन!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/rezmoss/digital-signatures-your-cryptographic-john-hancock-go-crypto-6-5f3p?1 यदि कोई उल्लंघन है, तो कृपया [email protected] पर संपर्क करें इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3