Golang minta hash

王林
王林asal
2023-05-16 11:21:07910semak imbas

Cincang ialah fungsi yang digunakan untuk memampatkan mesej dalam sebarang panjang ke dalam ringkasan panjang tetap. Secara umum, fungsi cincang memetakan sebarang input kepada rentetan panjang tetap output. Input yang berbeza mungkin dipetakan ke output yang sama, yang dipanggil Hash Collision. Fungsi hash digunakan secara meluas dalam keselamatan maklumat, semakan integriti data dan bidang lain. Dalam artikel ini, kami akan memperkenalkan cara menggunakan fungsi cincang dalam bahasa Go.

Terdapat banyak jenis fungsi cincang, dan setiap fungsi cincang mempunyai ciri uniknya sendiri, seperti panjang nilai cincang, keselamatan, kelajuan, dsb. Dalam bahasa Go, fungsi cincang yang biasa digunakan termasuk MD5, SHA-1, SHA-256, dsb. Fungsi ini melaksanakan antara muka crypto.Hash dan boleh digunakan untuk menjana ringkasan mesej.

Di bawah ini kami akan memperkenalkan cara menggunakan fungsi MD5, SHA-1 dan SHA-256 masing-masing.

MD5

MD5 ialah fungsi cincang yang digunakan secara meluas yang memampatkan mesej dalam sebarang panjang kepada nilai cincang 128-bit. Dalam bahasa Go, anda boleh menggunakan fungsi Baharu pakej crypto/md5 untuk mencipta fungsi cincang MD5. Memanggil fungsi ini akan mengembalikan penunjuk jenis Hash Anda boleh menggunakan penuding ini untuk memanggil kaedah Tulis untuk memasukkan data yang mana nilai cincang perlu dikira, dan akhirnya memanggil kaedah Sum untuk mendapatkan nilai cincang yang dikira. Kod sampel adalah seperti berikut:

package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.New()
    hash.Write(data)
    fmt.Printf("%x
", hash.Sum(nil))
}

Hasil output ialah:

5eb63bbbe01eeed093cb22bb8f5acdc3

SHA-1

SHA-1 ialah fungsi cincang berdasarkan algoritma MD5, yang akan Mesej dimampatkan menjadi nilai cincang 160-bit. Dalam bahasa Go, anda boleh menggunakan fungsi Baharu pakej crypto/sha1 untuk mencipta fungsi cincang SHA-1. Memanggil fungsi ini akan mengembalikan penunjuk jenis Hash Anda boleh menggunakan penuding ini untuk memanggil kaedah Tulis untuk memasukkan data yang mana nilai cincang perlu dikira, dan akhirnya memanggil kaedah Sum untuk mendapatkan nilai cincang yang dikira. Kod sampel adalah seperti berikut:

package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.New()
    hash.Write(data)
    fmt.Printf("%x
", hash.Sum(nil))
}

Hasil output ialah:

2ef7bde608ce5404e97d5f042f95f89f1c232871

SHA-256

SHA-256 ialah fungsi cincang yang memampatkan mesej dalam sebarang panjang nilai hash 256-bit. Dalam bahasa Go, anda boleh menggunakan fungsi Baharu pakej crypto/sha256 untuk mencipta fungsi cincang SHA-256. Memanggil fungsi ini akan mengembalikan penunjuk jenis Hash Anda boleh menggunakan penuding ini untuk memanggil kaedah Tulis untuk memasukkan data yang mana nilai cincang perlu dikira, dan akhirnya memanggil kaedah Sum untuk mendapatkan nilai cincang yang dikira. Kod sampel adalah seperti berikut:

package main

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha256.New()
    hash.Write(data)
    fmt.Printf("%x
", hash.Sum(nil))
}

Hasil output ialah:

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Seperti yang anda lihat, nilai cincang yang dihasilkan oleh fungsi cincang yang berbeza mempunyai panjang yang berbeza. Fungsi cincang yang sesuai hendaklah dipilih mengikut keperluan khusus dalam aplikasi.

Ringkasan: Fungsi cincang boleh memampatkan mesej dalam sebarang panjang ke dalam nilai cincang panjang tetap. Bahasa Go menyediakan pelbagai pelaksanaan fungsi cincang, dan kami boleh memilih fungsi cincang yang sesuai mengikut keperluan sebenar. Fungsi hash digunakan secara meluas dalam bidang seperti keselamatan maklumat dan semakan integriti data.

Atas ialah kandungan terperinci Golang minta hash. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:golang tiada kelasArtikel seterusnya:golang tiada kelas