Heim > Backend-Entwicklung > Golang > Golang implementiert Hash

Golang implementiert Hash

WBOY
Freigeben: 2023-05-16 12:35:37
Original
999 Leute haben es durchsucht

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)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist:

7f808d6e58805c6bbfd1eb6b2f06991a
Nach dem Login kopieren
  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)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist:

ee5a3dd464a36f28cd1f2ff8405348d7a48112d6
Nach dem Login kopieren
  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)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist:

9b64dd6a22a2d1f2850835a089a58fbd572d8399f22b97d73a5e7dd2c2ae9307
Nach dem Login kopieren
  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)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist:

22a0c871d16be5f7dafa984087bfe0e0694fcc9a0daeff1f76fcd50445ce40ba7a45dbb13a3d0bba593bf813c368b4c14354faf7ea5718c2907f93bffb2c1253
Nach dem Login kopieren
  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)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist:

f1ade6eb
Nach dem Login kopieren
  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)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist:

142113ca
Nach dem Login kopieren
  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)
}
Nach dem Login kopieren

Die Ausgabe lautet:

d852969b47e35f938f9f0ca05f2d3ca9f965b085e6c35d4ec5dbd6d2df4475d9
75bdbe670d92c40a2e62c753bd241f3181f191a5c70fd715d8a5e341a45b607e0f0c342c1df2b4ecb103d1dee066ef2d
8f87a4e71bde7c58c9ecc1c2c8d7bb93805d378854a496b13a5bbdaf01c138bdd01fe265ff0550c7219362918f451422c8aa738f4a0517a8d4416b7c2653c403
Nach dem Login kopieren
  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)
}
Nach dem Login kopieren

Das Ausgabeergebnis ist:

992f61da74e7f165b6825ba7b92ea5e119f7f4da612a7fa3024bddda7c2b45f4
266dbb94654e7c4d3493f3f88f5aff2d13601aeff862a8195aaf2caa16e7b3cb35f0b91d6f3c44f9b1dfeca28da40282caf1a2e8d5ed18a6ebf858adcce4813d
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage