Go by Example: SHA256 Hashes

SHA256 hashlari binary yoki matnli bloblar uchun qisqa identifikatorlarni hisoblashda tez-tez ishlatiladi. Masalan, TLS/SSL sertifikatlari sertifikat imzosini hisoblash uchun SHA256dan foydalanadi. Mana Go’da SHA256 hashlarini qanday hisoblash.

package main

Go bir nechta hash funksiyalarini turli crypto/* paketlarida amalga oshiradi.

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

Bu yerda yangi hash bilan boshlaymiz.

    h := sha256.New()

Write baytlarni kutadi. Agar sizda s satri bo’lsa, uni baytlarga aylantirish uchun []byte(s)dan foydalaning.

    h.Write([]byte(s))

Bu yakuniy hash natijasini bayt slice sifatida oladi. Sumga berilgan argument mavjud bayt slice’iga qo’shish uchun ishlatilishi mumkin: odatda u kerak emas.

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

Dasturni ishga tushirish hashni hisoblaydi va uni odam o’qiy oladigan hex formatida chop etadi.

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

Yuqorida ko’rsatilganga o’xshash usuldan foydalanib boshqa hashlarni hisoblashingiz mumkin. Masalan, SHA512 hashlarini hisoblash uchun crypto/sha512ni import qiling va sha512.New()dan foydalaning.

E’tibor bering, agar sizga kriptografik xavfsiz hashlar kerak bo’lsa, hash kuchini diqqat bilan o’rganishingiz kerak!

Keyingi misol: .