Empreinte Sha1

Empreinte SHA1 #

// Les [_empreintes SHA1_](http://fr.wikipedia.org/wiki/SHA-1) sont
// fréquemment utilisées pour calculer de courtes chaines
// permettant d'identifier des chaines ou des gros objets
// binaires. Par exemple, le [système de gestion de
// version git system](http://git-scm.com/) utilise SHA1 pour
// identifier les fichiers et répertoires versionnés.
// Voici comment calculer des empreintes SHA1 en Go.

package main

// Go implémente plusieurs fonctions de hachage dans
// plusieurs packages `crypto/*`.
import "crypto/sha1"
import "fmt"

func main() {
    s := "sha1 this string"

    // Le modèle pour générer une empreinte, c'est
    // `sha1.New()`, `sha1.Write(bytes)`, puis
    // `sha1.Sum([]byte{})`.
    // Ici, on commence avec un nouveau hachage.
    h := sha1.New()

    // `Write` attend un tableau d'octets (bytes). Si
    // vous avez une chaîne, utilisez `[]byte(s)`
    // pour forcer le type.
    h.Write([]byte(s))

    //  Ceci récupère le résultat du hachage dans une
    // slice d'octets. L'argument à `Sum` peut être
    // ajouté pour faire l'ajouter à une slice d'octets
    // existante. En général, ce n'est pas nécessaire.
    bs := h.Sum(nil)

    // On affiche souvent les valeurs SHA-1 en
    // hexadécimal, par exemple pour les commits Git.
    // Utilisez le formattage avec `%x` pour convertir
    // un résultat de hachage sous forme de chaîne
    // héxadécimale.
    fmt.Println(s)
    fmt.Printf("%x\n", bs)
}
# Lancer le programme calcule l'empreinte et l'affiche
# de manière lisible en hexadécimal.
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94

# Vous pouvez calculer des empreintes de la même manière
# qu'ici avec d'autres méthodes de hachage. Par exemple,
# pour utiliser MD5, il faut importer `crypto/md5` et
# utiliser `md5.New()`.

# Si vous avez besoin d'empreintes sûre pour de la
# cryptographie, vous devriez vous renseigner au sujet de
# la [force des différentes algorithmes](https://fr.wikipedia.org/wiki/Fonction_de_hachage_cryptographique)!