لغة Go بالأمثلة: بصمات SHA-256

تُستخدم بصمات SHA-256 كثيرًا لحساب معرّفات مختصرة لكتل البيانات الثنائية أو النصية. تستخدم شهادات TLS/SSL مثلًا SHA-256 لحساب توقيع الشهادة. إليك كيفية حساب بصمات SHA-256 في Go.

package main

تنفذ Go عدة دوال بصمة في حزم crypto/* المختلفة.

import (
    "crypto/sha256"
    "fmt"
)
func main() {
    s := "sha256 this string"

نبدأ هنا ببصمة جديدة.

    h := sha256.New()

تتوقع Write بايتات. إذا كانت لديك السلسلة النصية s، فاستخدم []byte(s) لتحويلها قسريًا إلى بايتات.

    h.Write([]byte(s))

يحصل هذا على نتيجة البصمة النهائية في صورة شريحة بايتات. يمكن استخدام وسيط Sum لإلحاق النتيجة بشريحة بايتات موجودة، لكن لا حاجة إليه عادة.

    bs := h.Sum(nil)
    fmt.Println(s)
    fmt.Printf("%x\n", bs)
}

يحسب تشغيل البرنامج البصمة ويطبعها بصيغة سداسية عشرية سهلة القراءة.

$ go run sha256-hashes.go
sha256 this string
1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...

يمكنك حساب بصمات أخرى باتباع نمط شبيه بما سبق. لحساب بصمات SHA512 مثلًا، استورد crypto/sha512 واستخدم sha512.New().

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

المثال التالي: .