Maison  >  Article  >  développement back-end  >  fichier golang à hacher

fichier golang à hacher

王林
王林original
2023-05-13 13:22:36780parcourir

Golang est un langage fortement typé et compilé statiquement avec une efficacité et une concurrence élevées. Golang dispose d'une riche bibliothèque standard et de bibliothèques tierces qui peuvent être utilisées à diverses fins. Cet article explique comment utiliser Golang pour convertir des fichiers en hachages.

Hash est une technologie qui mappe des données de longueur arbitraire dans une chaîne cryptée de longueur fixe. L'algorithme de hachage peut mapper des données données à une valeur plus petite, fixe et irréversible, et les résultats de l'algorithme de hachage peuvent être utilisés pour la vérification de l'intégrité des données, les signatures numériques, etc. Dans de nombreux scénarios, nous devons utiliser des algorithmes de hachage pour vérifier l'intégrité des fichiers, comme la vérification lors du téléchargement de fichiers, la fiabilité de la transmission des fichiers, etc.

La bibliothèque standard de Golang fournit une variété d'algorithmes de hachage, notamment MD5, SHA1, SHA256, etc. Ces algorithmes de hachage héritent tous de l’interface hash.Hash, ils peuvent donc être utilisés de la même manière.

Ce qui suit est un exemple de code simple qui montre comment utiliser Golang pour calculer la valeur de hachage MD5 d'un fichier :

package main

import (
    "crypto/md5"
    "fmt"
    "io"
    "os"
)

func main() {
    file, err := os.Open("testfile.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    h := md5.New()
    if _, err := io.Copy(h, file); err != nil {
        panic(err)
    }

    fmt.Printf("MD5 Hash: %x", h.Sum(nil))
}

Dans cet exemple de code, nous utilisons la méthode Open dans le package os pour ouvrir un fichier testfile.txt. Ensuite, nous avons utilisé la méthode New dans le package md5 pour créer un objet de hachage md5 h, et utilisé la méthode Copy dans le package io pour copier le contenu du fichier dans l'objet de hachage. Enfin, nous utilisons la méthode Sum de l'objet de hachage pour calculer la valeur de hachage et l'imprimer au format %x.

En plus de MD5, nous pouvons également utiliser des algorithmes de hachage tels que SHA1 et SHA256. Il suffit de remplacer md5.New par sha1.New ou sha256.New. Par exemple, nous pouvons modifier la partie de l'exemple de code qui calcule la valeur de hachage MD5 pour calculer la valeur de hachage SHA256 :

h := sha256.New()
if _, err := io.Copy(h, file); err != nil {
    panic(err)
}

fmt.Printf("SHA256 Hash: %x", h.Sum(nil))

En plus de calculer la valeur de hachage d'un seul fichier, la bibliothèque standard de Golang fournit également quelques méthodes pour calculer facilement le répertoire Valeurs de hachage de tous les fichiers dans . Par exemple, nous pouvons utiliser la méthode Walk dans le package filepath pour parcourir le répertoire et les sous-répertoires et calculer les hachages de tous les fichiers, comme indiqué ci-dessous :

package main

import (
    "crypto/md5"
    "fmt"
    "io"
    "os"
    "path/filepath"
)

func main() {
    root := "."
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        if !info.Mode().IsRegular() {
            return nil
        }

        file, err := os.Open(path)
        if err != nil {
            return err
        }
        defer file.Close()

        h := md5.New()
        if _, err := io.Copy(h, file); err != nil {
            return err
        }

        fmt.Printf("%x  %s
", h.Sum(nil), path)
        return nil
    })
    if err != nil {
        panic(err)
    }
}

Dans cet exemple de code, nous avons utilisé la méthode Walk dans le package filepath pour parcourir le répertoire actuel et ses sous-répertoires, ainsi que les valeurs de hachage MD5 sont calculés pour tous les fichiers et imprimés. Dans la fonction de rappel de la méthode Walk, nous déterminons d'abord si le fichier actuel est un fichier normal. Sinon, renvoyons nil. Sinon, ouvrez le fichier, calculez la valeur de hachage et imprimez-la.

En plus de calculer la valeur de hachage d'un seul fichier et de tous les fichiers d'un répertoire, nous pouvons également calculer la valeur de hachage du fichier en morceaux. Cette méthode peut être utilisée pour traiter des fichiers volumineux en divisant le fichier en plusieurs blocs, en calculant la valeur de hachage de chaque bloc séparément et enfin en concaténant les valeurs de hachage de tous les blocs pour calculer la valeur de hachage de l'ensemble du fichier.

Pour résumer, Golang fournit une multitude d'algorithmes et de méthodes de hachage pour exploiter les fichiers, qui peuvent facilement calculer la valeur de hachage du fichier. Qu'il s'agisse de calculer la valeur de hachage d'un seul fichier, de tous les fichiers d'un répertoire ou de traiter la valeur de hachage de gros fichiers en morceaux, Golang fournit une solution simple et efficace.

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
Article précédent:Golang bon projetArticle suivant:Golang bon projet