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

تنفيذ طريقة التشفير المتماثل القياسي والتوقيع على Golang

تم النشر بتاريخ 2024-07-31
تصفح:837

Image description

ما هي طريقة التوقيع القياسية للتشفير المتماثل؟

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

التشفير المتماثل

التشفير المتماثل يشبه التشفير بين الأصدقاء والأصدقاء، ما هذا، هاهاها، المغزى هو أن الأمر يشبه وجود نفس المفتاح لفتح القفل. يُستخدم هذا المفتاح لتشفير (قفل) وفك تشفير (فتح) البيانات. لذلك، يمكن لكل من الأصدقاء والأصدقاء قفل وفتح نفس البيانات طالما أن لديك المفتاح.

إمضاء

التوقيع هنا ليس توقيعًا ماديًا، بل هو توقيع رقمي. يضمن هذا التوقيع أن البيانات المرسلة هي بالفعل من الأصدقاء ولم يقم أحد بتغيير البيانات في منتصف الطريق. لذا، أيها الأصدقاء، يمكنكم التأكد من أن البيانات التي تتلقاها حقيقية من المصدر ولم يتم التلاعب بها.

لماذا يجب عليك استخدام هذه الطريقة؟

  • أمن البيانات: من المؤكد أنك تريد أن تكون بياناتك في مأمن من الأيدي الخبيثة، أليس كذلك؟ باستخدام التشفير المتماثل، يتم تشفير بياناتك ولا يمكن فتحها إلا من قبل الشخص الذي لديه المفتاح.
  • سلامة البيانات: من خلال التوقيع، يمكنك التأكد من أن البيانات التي تتلقاها أو ترسلها حقيقية ولم يتم العبث بها. لذا، أيها الأصدقاء، لا داعي للقلق بشأن خيانة شخص ما.
  • الكفاءة: التشفير المتماثل عادة ما يكون أسرع من التشفير غير المتماثل لأن عملية التشفير وفك التشفير أبسط.

مثال للاستخدام في جولانج

الآن دعونا نرى كيفية استخدام هذه الطريقة في جولانج.

التشفير المتماثل في Golang

package main

import (
    "crypto/aes"
    "crypto/cipher"
    "crypto/rand"
    "encoding/hex"
    "fmt"
    "io"
)

func encrypt(key, text []byte) (string, error) {
    block, err := aes.NewCipher(key)
    if err != nil {
        return "", err
    }

    ciphertext := make([]byte, aes.BlockSize len(text))
    iv := ciphertext[:aes.BlockSize]
    if _, err := io.ReadFull(rand.Reader, iv); err != nil {
        return "", err
    }

    stream := cipher.NewCFBEncrypter(block, iv)
    stream.XORKeyStream(ciphertext[aes.BlockSize:], text)

    return fmt.Sprintf("%x", ciphertext), nil
}

func decrypt(key []byte, cryptoText string) (string, error) {
    ciphertext, _ := hex.DecodeString(cryptoText)

    block, err := aes.NewCipher(key)
    if err != nil {
        return "", err
    }

    if len(ciphertext) 



التوقيع جولانج

package main

import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/hex"
    "fmt"
)

func createHMAC(key, message []byte) string {
    mac := hmac.New(sha256.New, key)
    mac.Write(message)
    return hex.EncodeToString(mac.Sum(nil))
}

func verifyHMAC(key, message []byte, signature string) bool {
    expectedMAC := createHMAC(key, message)
    return hmac.Equal([]byte(expectedMAC), []byte(signature))
}

func main() {
    key := []byte("my-secret-key")
    message := []byte("important message")

    signature := createHMAC(key, message)
    fmt.Printf("Signature: %s\n", signature)

    isValid := verifyHMAC(key, message, signature)
    fmt.Printf("Is valid: %t\n", isValid)
}

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

مصدر:

  • HMAC Go
  • SHA256
بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/yogameleniawan/implementasi-metode-standard-sytric-encryption-signature-pada-golang-2m5m?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3