Maison  >  Article  >  développement back-end  >  Golang implémente le hachage

Golang implémente le hachage

WBOY
WBOYoriginal
2023-05-16 12:35:37931parcourir

Hash fait référence à une méthode de mappage d'une chaîne binaire de longueur arbitraire en une chaîne binaire de longueur fixe. La règle de mappage est l'algorithme de hachage, également connu sous le nom d'algorithme de hachage. Les algorithmes de hachage sont souvent utilisés dans des applications telles que le cryptage, la vérification de l'intégrité des données et la recherche de tables de hachage.

Le langage Go (golang) fournit le package de hachage dans la bibliothèque standard, qui permet l'implémentation d'une variété d'algorithmes de hachage, notamment les suivants :

  • MD5 , SHA1, SHA256, SHA512 et autres algorithmes de hachage de base
  • CRC32, Adler32 et autres algorithmes de somme de contrôle
  • Blake2b, SHA3 et autres algorithmes de hachage plus récents
  • # 🎜🎜#
Cet article présentera en détail comment utiliser le package de hachage dans Golang pour implémenter l'algorithme de hachage.

    MD5
MD5 (Message-Digest Algorithm 5, Message Digest Algorithm 5th Edition) est un algorithme de hachage courant. Le résultat de sortie est un. Chaîne binaire de 128 bits, généralement représentée par un nombre hexadécimal de 32 bits. Dans Golang, vous pouvez obtenir un objet de hachage md5 via la méthode md5.New() dans le package de hachage et utiliser la méthode Write pour écrire les données à hacher dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.

Ce qui suit est un exemple de code :

package main

import (
    "crypto/md5"
    "fmt"
)

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

Le résultat de sortie est :

#

7f808d6e58805c6bbfd1eb6b2f06991a

    SHA1
  1. #🎜🎜 ## 🎜🎜#SHA1 (Secure Hash Algorithm 1, Secure Hash Algorithm 1) est un algorithme de hachage relativement sécurisé. Son résultat de sortie est une chaîne binaire de 160 bits, généralement représentée par un nombre hexadécimal de 40 chiffres. Dans Golang, vous pouvez obtenir un objet de hachage sha1 via la méthode sha1.New() dans le package de hachage et utiliser la méthode Write pour écrire les données à hacher dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.
Ce qui suit est un exemple de code :

package main

import (
    "crypto/sha1"
    "fmt"
)

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

Le résultat de sortie est :

ee5a3dd464a36f28cd1f2ff8405348d7a48112d6

SHA256

#🎜🎜 ## 🎜🎜#SHA256 (Secure Hash Algorithm 256, Secure Hash Algorithm 256th Edition) est un algorithme de hachage plus sécurisé. Son résultat de sortie est une chaîne binaire de 256 bits, généralement représentée par un nombre hexadécimal de 64 bits. Dans Golang, vous pouvez obtenir un objet de hachage sha256 via la méthode sha256.New() dans le package de hachage et utiliser la méthode Write pour écrire les données à hacher dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.
  1. Ce qui suit est un exemple de code :
  2. package main
    
    import (
        "crypto/sha256"
        "fmt"
    )
    
    func main() {
        data := []byte("example data")
        hash := sha256.Sum256(data)
        fmt.Printf("%x", hash)
    }
Le résultat de sortie est :

9b64dd6a22a2d1f2850835a089a58fbd572d8399f22b97d73a5e7dd2c2ae9307

SHA512

#🎜🎜 ## 🎜🎜#SHA512 (Secure Hash Algorithm 512, Secure Hash Algorithm 512th Edition) est l'un des algorithmes de hachage les plus sécurisés. Son résultat de sortie est une chaîne binaire de 512 bits, généralement représentée par un nombre hexadécimal de 128 bits. Dans Golang, vous pouvez obtenir un objet de hachage sha512 via la méthode sha512.New() dans le package de hachage et utiliser la méthode Write pour écrire les données à hacher dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.

Ce qui suit est un exemple de code :
    package main
    
    import (
        "crypto/sha512"
        "fmt"
    )
    
    func main() {
        data := []byte("example data")
        hash := sha512.Sum512(data)
        fmt.Printf("%x", hash)
    }
  1. Le résultat de sortie est :
  2. 22a0c871d16be5f7dafa984087bfe0e0694fcc9a0daeff1f76fcd50445ce40ba7a45dbb13a3d0bba593bf813c368b4c14354faf7ea5718c2907f93bffb2c1253

CRC32

#🎜🎜 ## 🎜🎜#CRC32 (Cyclic Redundancy Check 32, cyclic redundancy check 32 bits) est un algorithme de somme de contrôle utilisé pour vérifier l'intégrité des données. Le résultat de sortie est une chaîne binaire de 32 bits, généralement représentée par un nombre hexadécimal à 8 chiffres. Dans Golang, vous pouvez obtenir un objet de hachage crc32 via la méthode crc32.NewIEEE() dans le package de hachage et utiliser la méthode Write pour écrire les données à hacher dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.

Voici un exemple de code :

package main

import (
    "fmt"
    "hash/crc32"
)

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

Le résultat de sortie est :
    #
    f1ade6eb
  1. Adler32
#🎜🎜 ## 🎜🎜#Adler32 est un autre algorithme de somme de contrôle. Son résultat de sortie est une chaîne binaire de 32 bits, généralement représentée par un nombre hexadécimal à 8 chiffres. Dans Golang, vous pouvez obtenir un objet de hachage adler32 via la méthode adler32.New() dans le package de hachage et utiliser la méthode Write pour écrire les données à hacher dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.

Ce qui suit est un exemple de code :

package main

import (
    "fmt"
    "hash/adler32"
)

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

Le résultat de sortie est :

142113ca

    Blake2b
  1. #🎜🎜 ## 🎜🎜#Blake2b est un algorithme de hachage plus récent, le résultat de sortie peut être personnalisé en longueur, les plus courants sont 256 bits, 384 bits et 512 bits. Dans Golang, vous pouvez obtenir un objet de hachage blate2b de longueur correspondante via les méthodes blake2b.New256(), blake2b.New384() et blake2b.New512() dans le package de hachage, et utiliser la méthode Write pour écrire les données à hacher. dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.
Ce qui suit est un exemple de code :

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

Le résultat de sortie est :

#🎜🎜 ## 🎜🎜#SHA3 (Secure Hash Algorithm 3, Secure Hash Algorithm 3) est un autre algorithme de hachage plus récent. La longueur de son résultat de sortie peut être personnalisée. Les plus courants sont de 256 bits et 512 bits. Dans Golang, vous pouvez obtenir un objet de hachage sha3 de longueur correspondante via les méthodes sha3.New256() et sha3.New512() dans le package de hachage, et utiliser la méthode Write pour écrire les données à hacher dans l'objet de hachage. Enfin, la valeur de hachage calculée peut être obtenue via la méthode Sum.

Ce qui suit est un exemple de code :

d852969b47e35f938f9f0ca05f2d3ca9f965b085e6c35d4ec5dbd6d2df4475d9
75bdbe670d92c40a2e62c753bd241f3181f191a5c70fd715d8a5e341a45b607e0f0c342c1df2b4ecb103d1dee066ef2d
8f87a4e71bde7c58c9ecc1c2c8d7bb93805d378854a496b13a5bbdaf01c138bdd01fe265ff0550c7219362918f451422c8aa738f4a0517a8d4416b7c2653c403
    Le résultat de sortie est :
  1. 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)
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn