Heim >Backend-Entwicklung >Golang >Golang implementiert Hash

Golang implementiert Hash

WBOY
WBOYOriginal
2023-05-16 12:35:371032Durchsuche

Hash bezieht sich auf eine Methode zum Zuordnen einer binären Zeichenfolge beliebiger Länge in eine binäre Zeichenfolge fester Länge. Die Zuordnungsregel ist der Hash-Algorithmus, auch Hash-Algorithmus genannt. Hash-Algorithmen werden häufig in Anwendungen wie Verschlüsselung, Überprüfung der Datenintegrität und Hash-Tabellensuche verwendet.

Go-Sprache (Golang) stellt das Hash-Paket in der Standardbibliothek bereit, das die Implementierung einer Vielzahl von Hash-Algorithmen ermöglicht, darunter die folgenden:

  • MD5, SHA1, SHA256, SHA512 und andere grundlegende Hash-Algorithmen
  • CRC32, Prüfsummenalgorithmen wie Adler32
  • Blake2b, SHA3 und andere neuere Hashing-Algorithmen

In diesem Artikel wird detailliert beschrieben, wie das Hash-Paket in Golang zum Implementieren von Hashing-Algorithmen verwendet wird.

  1. MD5

MD5 (Message-Digest-Algorithmus 5, fünfte Ausgabe des Message-Digest-Algorithmus) ist ein gängiger Hash-Algorithmus. Sein Ausgabeergebnis ist eine 128-Bit-Binärzeichenfolge, die normalerweise durch eine 32-Bit-Hexadezimalzahl dargestellt wird. In Golang können Sie ein MD5-Hash-Objekt über die Methode md5.New() im Hash-Paket abrufen und mit der Write-Methode die zu hashenden Daten in das Hash-Objekt schreiben. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Das Folgende ist ein Beispielcode:

package main

import (
    "crypto/md5"
    "fmt"
)

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

Das Ausgabeergebnis ist:

7f808d6e58805c6bbfd1eb6b2f06991a
  1. SHA1

SHA1 (Secure Hash Algorithm 1, die erste Version des Secure Hash-Algorithmus) ist ein relativ sicherer Hash-Algorithmus Ausgabe Das Ergebnis ist eine 160-Bit-Binärzeichenfolge, die normalerweise durch eine 40-Bit-Hexadezimalzahl dargestellt wird. In Golang können Sie über die Methode sha1.New() im Hash-Paket ein SHA1-Hash-Objekt abrufen und mit der Write-Methode die zu hashenden Daten in das Hash-Objekt schreiben. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Das Folgende ist ein Beispielcode:

package main

import (
    "crypto/sha1"
    "fmt"
)

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

Das Ausgabeergebnis ist:

ee5a3dd464a36f28cd1f2ff8405348d7a48112d6
  1. SHA256

SHA256 (Secure Hash Algorithm 256, Secure Hash Algorithm Version 256) ist ein sichererer Hash-Algorithmus 256-Bit-Binärzeichenfolge, normalerweise dargestellt durch eine 64-Bit-Hexadezimalzahl. In Golang können Sie ein sha256-Hash-Objekt über die sha256.New()-Methode im Hash-Paket abrufen und die Write-Methode verwenden, um die zu hashenden Daten in das Hash-Objekt zu schreiben. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Hier ist ein Beispielcode:

package main

import (
    "crypto/sha256"
    "fmt"
)

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

Das Ausgabeergebnis ist:

9b64dd6a22a2d1f2850835a089a58fbd572d8399f22b97d73a5e7dd2c2ae9307
  1. SHA512

SHA512 (Secure Hash Algorithm 512, Secure Hash Algorithm Version 512) ist einer der sichersten Hash-Algorithmen und seine Ausgabe Das Ergebnis ist eine 512-Bit-Binärzeichenfolge, die normalerweise durch eine 128-Bit-Hexadezimalzahl dargestellt wird. In Golang können Sie ein sha512-Hash-Objekt über die sha512.New()-Methode im Hash-Paket abrufen und die Write-Methode verwenden, um die zu hashenden Daten in das Hash-Objekt zu schreiben. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Das Folgende ist ein Beispielcode:

package main

import (
    "crypto/sha512"
    "fmt"
)

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

Das Ausgabeergebnis ist:

22a0c871d16be5f7dafa984087bfe0e0694fcc9a0daeff1f76fcd50445ce40ba7a45dbb13a3d0bba593bf813c368b4c14354faf7ea5718c2907f93bffb2c1253
  1. CRC32

CRC32 (Cyclic Redundancy Check 32, zyklische Redundanzprüfung 32 Bits) ist ein Prüfsummenalgorithmus, der zur Überprüfung der Datenintegrität verwendet wird. Das Ausgabeergebnis ist eine 32-Bit-Binärzeichenfolge, die normalerweise durch eine 8-stellige Hexadezimalzahl dargestellt wird. In Golang können Sie ein crc32-Hash-Objekt über die Methode crc32.NewIEEE() im Hash-Paket abrufen und mit der Write-Methode die zu hashenden Daten in das Hash-Objekt schreiben. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Das Folgende ist ein Beispielcode:

package main

import (
    "fmt"
    "hash/crc32"
)

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

Das Ausgabeergebnis ist:

f1ade6eb
  1. Adler32

Adler32 ist ein weiterer Prüfsummenalgorithmus, der eine 32-Bit-Binärzeichenfolge ist, die normalerweise eine 8-stellige hexadezimale Zahlendarstellung verwendet . In Golang können Sie ein adler32-Hash-Objekt über die Methode adler32.New() im Hash-Paket abrufen und die Write-Methode verwenden, um die zu hashenden Daten in das Hash-Objekt zu schreiben. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Das Folgende ist ein Beispielcode:

package main

import (
    "fmt"
    "hash/adler32"
)

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

Das Ausgabeergebnis ist:

142113ca
  1. Blake2b

Blake2b ist ein neuerer Hash-Algorithmus. Die Länge des Ausgabeergebnisses kann individuell angepasst werden 512 Bit. In Golang können Sie über die Methoden blake2b.New256(), blake2b.New384() und blake2b.New512() im Hash-Paket ein blate2b-Hash-Objekt entsprechender Länge abrufen und die zu hashenden Daten mit der Write-Methode schreiben in das Hash-Objekt. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Hier ist ein Beispielcode:

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)
}

Die Ausgabe lautet:

d852969b47e35f938f9f0ca05f2d3ca9f965b085e6c35d4ec5dbd6d2df4475d9
75bdbe670d92c40a2e62c753bd241f3181f191a5c70fd715d8a5e341a45b607e0f0c342c1df2b4ecb103d1dee066ef2d
8f87a4e71bde7c58c9ecc1c2c8d7bb93805d378854a496b13a5bbdaf01c138bdd01fe265ff0550c7219362918f451422c8aa738f4a0517a8d4416b7c2653c403
  1. SHA3

SHA3 (Secure Hash Algorithm 3, Secure Hash Algorithm Version 3) ist ein weiterer neuerer Hashing-Algorithmus, dessen Ausgabeergebnislänge angepasst werden kann. die gebräuchlichsten sind 256 Bit und 512 Bit. In Golang können Sie über die Methoden sha3.New256() und sha3.New512() im Hash-Paket ein SHA3-Hash-Objekt entsprechender Länge abrufen und mit der Write-Methode die zu hashenden Daten in das Hash-Objekt schreiben. Schließlich kann der berechnete Hashwert über die Sum-Methode ermittelt werden.

Das Folgende ist ein Beispielcode:

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)
}

Das Ausgabeergebnis ist:

992f61da74e7f165b6825ba7b92ea5e119f7f4da612a7fa3024bddda7c2b45f4
266dbb94654e7c4d3493f3f88f5aff2d13601aeff862a8195aaf2caa16e7b3cb35f0b91d6f3c44f9b1dfeca28da40282caf1a2e8d5ed18a6ebf858adcce4813d

Das obige ist der detaillierte Inhalt vonGolang implementiert Hash. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn