"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > التوقيعات الرقمية: التشفير الخاص بك جون هانكوك، Go Crypto 6

التوقيعات الرقمية: التشفير الخاص بك جون هانكوك، Go Crypto 6

تم النشر بتاريخ 2025-01-20
تصفح:425

Digital Signatures: Your Cryptographic John Hancock, Go Crypto 6

مرحبًا يا بطل العملات المشفرة! هل أنت مستعد للغوص في عالم التوقيعات الرقمية؟ فكر في هذه الأمور باعتبارها توقيعك الرقمي - وهي طريقة لإثبات أنك أنت حقًا في العالم الرقمي، وأن رسالتك لم يتم العبث بها. دعنا نستكشف كيف تساعدنا Go في إنشاء شخصيات John Hancocks الرقمية غير القابلة للتزوير!

توقيعات RSA: التوقيع الكلاسيكي

أولاً، لدينا توقيعات RSA. إنه مثل التوقيع على وثيقة بقلم فاخر وغير قابل للتزوير.

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

توقيعات ECDSA: التوقيع المتعرج

بعد ذلك، لدينا توقيعات ECDSA. إنه يشبه ابن عم RSA الأكثر برودة والأكثر كفاءة - توقيعات أصغر تتمتع بنفس المستوى من الأمان.

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. RSA: إنها مثل سكين التوقيعات الخاصة بالجيش السويسري. مدعوم على نطاق واسع، ولكن التوقيعات مكتنزة بعض الشيء.
  2. ECDSA: إنها الحل الأوسط. توقيعات أصغر من RSA، لا تزال مدعومة على نطاق واسع.
  3. Ed25519: الطفل الجديد في المبنى. توقيعات صغيرة وسريعة للغاية، ولكن قد لا تكون مدعومة في كل مكان حتى الآن.

القواعد الذهبية للتوقيعات الرقمية

الآن بعد أن أصبحت فنانًا مميزًا، إليك بعض القواعد الذهبية التي يجب وضعها في الاعتبار:

  1. العشوائية هي المفتاح : استخدم دائمًا التشفير/الراند لأي شيء متعلق بالتوقيعات. العشوائية التي يمكن التنبؤ بها هي مثل استخدام نفس التوقيع في كل مرة - وهذا ليس جيدًا!

  2. التجزئة قبل التوقيع : باستثناء Ed25519، قم دائمًا بتجزئة رسالتك قبل التوقيع. إنه مثل إنشاء بصمة فريدة لرسالتك.

  3. الحجم مهم: استخدم 2048 بت على الأقل لـ RSA، و256 بت لـ ECDSA، ويكون Ed25519 دائمًا 256 بت.

  4. حافظ على أقلامك آمنة : قم بحماية مفاتيحك الخاصة كما لو كنت تحمي أغلى ممتلكاتك. مفتاح التوقيع المسروق يشبه قيام شخص ما بسرقة هويتك!

  5. التحقق من أدوات التحقق الخاصة بك: تأكد من أن المفاتيح العامة التي تستخدمها للتحقق من التوقيعات شرعية. المفتاح العام المزيف قد يجعلك تثق في توقيع مزيف!

  6. التوحيد عندما يكون ذلك ممكنًا: فكر في استخدام تنسيقات مثل JSON Web Signature (JWS) إذا كنت بحاجة إلى اللعب بشكل جيد مع الأنظمة الأخرى.

  7. كن على دراية بالهجمات الخادعة : في السيناريوهات الأمنية المشددة، احذر من هجمات القنوات الجانبية. إنهم مثل شخص يلقي نظرة خاطفة على كتفك أثناء التوقيع.

ما هي الخطوة التالية؟

تهانينا! لقد قمت للتو بإضافة التوقيعات الرقمية إلى مجموعة أدوات التشفير الخاصة بك. هذه الأمور ضرورية لإثبات الأصالة والنزاهة في العالم الرقمي.

بعد ذلك، سنستكشف كيفية تعامل Go مع شهادات TLS وX.509. إنه مثل تعلم كيفية إنشاء بطاقات الهوية الرقمية والتحقق منها - وهي ضرورية للاتصال الآمن على الإنترنت!

تذكر أنه في عالم التشفير، يعد فهم هذه الأساسيات أمرًا بالغ الأهمية. إن الأمر أشبه بتعلم كتابة توقيعك - وهي مهارة أساسية في العصر الرقمي. أتقن هذه الأمور، وستكون في طريقك لإنشاء تطبيقات آمنة وموثقة في Go.

إذن، ما رأيك في تجربة تطبيق نظام بسيط لتوقيع المستندات؟ أو ربما قم بإنشاء برنامج يتحقق من تحديثات البرامج باستخدام التوقيعات الرقمية؟ عالم التوقيعات الرقمية غير القابلة للتزوير أصبح في متناول يدك! أتمنى لك حظًا سعيدًا في البرمجة، يا بطل التشفير!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/rezmoss/digital-signatures-your-cryptographic-john-hancock-go-crypto-6-5f3p?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3