Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah pengiraan hash fungsi Golang, crc32, md5 dan sha1

Kaedah pengiraan hash fungsi Golang, crc32, md5 dan sha1

WBOY
WBOYasal
2023-05-18 08:12:222010semak imbas

Golang ialah bahasa pengaturcaraan berprestasi tinggi baharu dengan perpustakaan standard yang kaya dan fungsi terbina dalam. Ini termasuk fungsi cincang, yang boleh digunakan untuk menjana nilai cincang data untuk pengesahan fail, pengesahan data, dsb. Artikel ini akan memperkenalkan kaedah pengiraan dan aplikasi hash fungsi yang biasa digunakan, crc32, md5 dan sha1 di Golang.

1. Fungsi cincang

Fungsi cincang Golang termasuk pelbagai algoritma cincang, seperti SHA-1, MD5, SHA-224, SHA-256, SHA-384 dan SHA-512 tunggu . Algoritma pencincangan yang berbeza mempunyai ciri dan senario aplikasi yang berbeza.

1. SHA-1

SHA-1 ialah algoritma cincang selamat yang boleh menukar data dari sebarang panjang kepada nilai cincang panjang tetap. Kaedah pengiraan fungsi cincang SHA-1 adalah seperti berikut:

import "crypto/sha1"

func main() {
    data := []byte("hello, world!")
    sha := sha1.Sum(data)
    shaStr := fmt.Sprintf("%x", sha)
    fmt.Println("SHA-1 of the data is:", shaStr)
}

Antaranya, fungsi sha1.Sum() boleh mengira nilai cincang SHA-1, dan jenis nilai pulangan ialah tatasusunan bait dengan panjang 20. Oleh kerana nilai cincang biasanya diwakili sebagai rentetan heksadesimal, anda boleh menggunakan fungsi fmt.Sprintf() untuk menukar tatasusunan bait kepada rentetan perenambelasan.

2. MD5

MD5 ialah algoritma cincang yang biasa digunakan yang menukar data dari sebarang panjang kepada nilai cincang 128-bit. Kaedah pengiraan fungsi cincang MD5 adalah seperti berikut:

import "crypto/md5"

func main() {
    data := []byte("hello, world!")
    md := md5.Sum(data)
    mdStr := fmt.Sprintf("%x", md)
    fmt.Println("MD5 of the data is:", mdStr)
}

Antaranya, fungsi md5.Sum() boleh mengira nilai cincang MD5, dan jenis nilai pulangan ialah tatasusunan bait dengan panjang 16 . Begitu juga, anda juga perlu menggunakan fungsi fmt.Sprintf() untuk menukar tatasusunan bait kepada rentetan heksadesimal.

3. SHA-256

SHA-256 ialah algoritma cincang selamat yang menukar data dari sebarang panjang kepada nilai cincang 256-bit. Kaedah pengiraan fungsi cincang SHA-256 adalah seperti berikut:

import "crypto/sha256"

func main() {
    data := []byte("hello, world!")
    sha := sha256.Sum256(data)
    shaStr := fmt.Sprintf("%x", sha)
    fmt.Println("SHA-256 of the data is:", shaStr)
}

Antaranya, fungsi sha256.Sum256() boleh mengira nilai cincang SHA-256 dan jenis nilai pulangan ialah tatasusunan bait bagi panjang 32. Begitu juga, anda juga perlu menggunakan fungsi fmt.Sprintf() untuk menukar tatasusunan bait kepada rentetan heksadesimal.

2. Fungsi crc32

CRC32 ialah algoritma semakan redundansi kitaran yang biasa digunakan yang boleh digunakan untuk menyemak ketekalan dan integriti penghantaran data. Fungsi crc32 Golang menyokong berbilang algoritma CRC32, seperti IEEE, Castagnoli, Koopman, dsb.

import "hash/crc32"

func main() {
    data := []byte("hello, world!")
    crc := crc32.ChecksumIEEE(data)
    fmt.Println("CRC32 of the data is:", crc)
}

Antaranya, fungsi crc32.ChecksumIEEE() boleh mengira nilai CRC32 algoritma IEEE, dan jenis nilai pulangan ialah uint32.

3. Ringkasan

Artikel ini memperkenalkan kaedah pengiraan fungsi cincang dan fungsi crc32 yang biasa digunakan dalam Golang, termasuk algoritma seperti SHA-1, MD5, SHA-256 dan IEEE CRC32. Fungsi ini boleh digunakan untuk pengesahan integriti penghantaran data, pengesahan fail, dsb., dan merupakan salah satu alat yang biasa digunakan dalam pengaturcaraan Golang.

Atas ialah kandungan terperinci Kaedah pengiraan hash fungsi Golang, crc32, md5 dan sha1. 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