Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Golang melaksanakan hash

Golang melaksanakan hash

WBOY
WBOYasal
2023-05-16 12:35:37928semak imbas

Cincang merujuk kepada kaedah memetakan rentetan perduaan panjang arbitrari ke rentetan perduaan panjang tetap Peraturan pemetaan ialah algoritma cincang, juga dikenali sebagai algoritma cincang. Algoritma cincang sering digunakan dalam aplikasi seperti penyulitan, menyemak integriti data dan carian jadual cincang.

Bahasa Go (golang) menyediakan pakej cincang dalam pustaka standard, yang menyediakan pelaksanaan pelbagai algoritma cincang, termasuk yang berikut:

  • MD5, SHA1, SHA256, Algoritma cincang asas seperti SHA512
  • Algoritma Checksum seperti CRC32 dan Adler32
  • Algoritma cincang yang lebih baharu seperti Blake2b dan SHA3

Artikel ini akan memperkenalkan secara terperinci cara untuk Gunakan pakej cincang dalam golang untuk melaksanakan algoritma cincang.

  1. MD5

MD5 (Message-Digest Algorithm 5, edisi kelima algoritma message digest) ialah algoritma cincang biasa yang hasil keluarannya ialah 128 bit Rentetan binari, biasanya diwakili dengan nombor perenambelasan 32-bit. Dalam golang, anda boleh mendapatkan objek cincang md5 melalui kaedah md5.New() dalam pakej cincang, dan gunakan kaedah Tulis untuk menulis data yang akan dicincang ke dalam objek cincang. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah contoh kod:

package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("example data")
    hash := md5.Sum(data)
    fmt.Printf("%x", hash)
}

Hasil output ialah:

7f808d6e58805c6bbfd1eb6b2f06991a
  1. SHA1

SHA1 (Secure Hash Algorithm 1, Algoritma Hash Selamat (Edisi Pertama) ialah algoritma cincang yang agak selamat Hasil keluarannya ialah rentetan perduaan 160-bit, biasanya diwakili oleh nombor heksadesimal 40 digit. Dalam golang, anda boleh mendapatkan objek cincang sha1 melalui kaedah sha1.New() dalam pakej cincang, dan gunakan kaedah Tulis untuk menulis data yang akan dicincang ke dalam objek cincang. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah contoh kod:

package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("example data")
    hash := sha1.Sum(data)
    fmt.Printf("%x", hash)
}

Hasil output ialah:

ee5a3dd464a36f28cd1f2ff8405348d7a48112d6
  1. SHA256

SHA256 (Secure Hash Algorithm 256, Secure Hash Algorithm Version 256) ialah algoritma hash yang lebih selamat. Hasil keluarannya ialah rentetan binari 256-bit, biasanya diwakili oleh nombor perenambelasan 64-bit. Dalam golang, anda boleh mendapatkan objek cincang sha256 melalui kaedah sha256.New() dalam pakej cincang, dan gunakan kaedah Tulis untuk menulis data yang akan dicincang ke dalam objek cincang. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah contoh kod:

package main

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    data := []byte("example data")
    hash := sha256.Sum256(data)
    fmt.Printf("%x", hash)
}

Hasil output ialah:

9b64dd6a22a2d1f2850835a089a58fbd572d8399f22b97d73a5e7dd2c2ae9307
  1. SHA512

SHA512 (Secure Hash Algorithm 512, Secure Hash Algorithm versi 512) ialah salah satu daripada algoritma cincang yang paling selamat Hasil keluarannya ialah rentetan binari 512-bit, biasanya diwakili oleh nombor perenambelasan 128-bit. Dalam golang, anda boleh mendapatkan objek cincang sha512 melalui kaedah sha512.New() dalam pakej cincang, dan gunakan kaedah Tulis untuk menulis data yang akan dicincang ke dalam objek cincang. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah kod sampel:

package main

import (
    "crypto/sha512"
    "fmt"
)

func main() {
    data := []byte("example data")
    hash := sha512.Sum512(data)
    fmt.Printf("%x", hash)
}

Hasil output ialah:

22a0c871d16be5f7dafa984087bfe0e0694fcc9a0daeff1f76fcd50445ce40ba7a45dbb13a3d0bba593bf813c368b4c14354faf7ea5718c2907f93bffb2c1253
  1. CRC32

CRC32 (Semakan Lebihan Siklik 32, Pemeriksaan redundansi kitaran (32 bit) ialah algoritma checksum yang digunakan untuk mengesahkan integriti data. Hasil keluaran ialah rentetan binari 32-bit, biasanya diwakili oleh nombor perenambelasan 8 digit. Dalam golang, anda boleh mendapatkan objek cincang crc32 melalui kaedah crc32.NewIEEE() dalam pakej cincang, dan gunakan kaedah Tulis untuk menulis data yang hendak dicincang ke dalam objek cincang. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah contoh kod:

package main

import (
    "fmt"
    "hash/crc32"
)

func main() {
    data := []byte("example data")
    hash := crc32.ChecksumIEEE(data)
    fmt.Printf("%x", hash)
}

Hasil keluarannya ialah:

f1ade6eb
  1. Adler32

Adler32 ialah cek lain. hasil keluaran algoritma jumlah ialah rentetan binari 32-bit, biasanya diwakili oleh nombor perenambelasan 8 digit. Dalam golang, anda boleh mendapatkan objek cincang adler32 melalui kaedah adler32.New() dalam pakej cincang, dan gunakan kaedah Tulis untuk menulis data yang hendak dicincang ke dalam objek cincang. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah contoh kod:

package main

import (
    "fmt"
    "hash/adler32"
)

func main() {
    data := []byte("example data")
    hash := adler32.Checksum(data)
    fmt.Printf("%x", hash)
}

Outputnya ialah:

142113ca
  1. Blake2b

Blake2b ialah algoritma Hash yang lebih baharu, hasil keluaran boleh disesuaikan panjangnya, yang biasa ialah 256 bit, 384 bit dan 512 bit. Dalam golang, anda boleh mendapatkan objek cincang blate2b dengan panjang yang sepadan melalui kaedah blake2b.New256(), blake2b.New384() dan blake2b.New512() dalam pakej cincang dan gunakan kaedah Tulis untuk menulis data yang akan dicincang ke dalam objek hash. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah contoh kod:

package main

import (
    "fmt"
    "golang.org/x/crypto/blake2b"
)

func main() {
    data := []byte("example data")
    hash256 := blake2b.Sum256(data)
    hash384 := blake2b.Sum384(data)
    hash512 := blake2b.Sum512(data)
    fmt.Printf("%x
%x
%x", hash256, hash384, hash512)
}

Hasil output ialah:

d852969b47e35f938f9f0ca05f2d3ca9f965b085e6c35d4ec5dbd6d2df4475d9
75bdbe670d92c40a2e62c753bd241f3181f191a5c70fd715d8a5e341a45b607e0f0c342c1df2b4ecb103d1dee066ef2d
8f87a4e71bde7c58c9ecc1c2c8d7bb93805d378854a496b13a5bbdaf01c138bdd01fe265ff0550c7219362918f451422c8aa738f4a0517a8d4416b7c2653c403
  1. SHA3

SHA3 (Secure Hash Algorithm 3, Secure Hash Algorithm versi 3) ialah satu lagi algoritma cincangan yang lebih baharu. Panjang hasil keluarannya boleh disesuaikan Yang lebih biasa ialah 256 bit dan 512 bit. Dalam golang, anda boleh mendapatkan objek cincang sha3 dengan panjang yang sepadan melalui kaedah sha3.New256() dan sha3.New512() dalam pakej cincang, dan gunakan kaedah Tulis untuk menulis data yang akan dicincang ke dalam objek cincang. Akhir sekali, nilai cincang yang dikira boleh diperolehi melalui kaedah Sum.

Berikut ialah kod sampel:

package main

import (
    "fmt"
    "golang.org/x/crypto/sha3"
)

func main() {
    data := []byte("example data")
    hash256 := sha3.Sum256(data)
    hash512 := sha3.Sum512(data)
    fmt.Printf("%x
%x", hash256, hash512)
}

Hasil output ialah:

992f61da74e7f165b6825ba7b92ea5e119f7f4da612a7fa3024bddda7c2b45f4
266dbb94654e7c4d3493f3f88f5aff2d13601aeff862a8195aaf2caa16e7b3cb35f0b91d6f3c44f9b1dfeca28da40282caf1a2e8d5ed18a6ebf858adcce4813d

Atas ialah kandungan terperinci Golang melaksanakan 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