Go با مثال: هش SHA256

هش‌های SHA256 اغلب برای محاسبهٔ شناسه‌های کوتاه برای داده‌های باینری یا متنی استفاده می‌شوند. برای مثال، گواهی‌های TLS/SSL از SHA256 برای محاسبهٔ امضای گواهی استفاده می‌کنند. این روش محاسبهٔ هش SHA256 در 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 را import کنید و از sha512.New() استفاده کنید.

توجه کنید که اگر به هش‌های امن از نظر رمزنگاری نیاز دارید، باید با دقت دربارهٔ قدرت هش تحقیق کنید!

مثال بعدی: .