La funzione SHA-1 viene frequentemente utilizzata per calcolare il digest (l’impronta) dei file binari o di testo. Ad esempio il sistema di versionamento git utilizza gli SHA-1 in modo intensivo per identificare i file e le cartelle versionate. Ecco come calcolare gli hash SHA-1 in Go. |
|
package main
|
|
Si possono trovare implementazioni di svariati algoritmi
crittografici dentro il pacchetto |
import "crypto/sha1"
import "fmt"
|
func main() {
s := "sha1 this string"
|
|
Il pattern per creare un nuovo hash è |
h := sha1.New()
|
La funzione |
h.Write([]byte(s))
|
Con la funzione |
bs := h.Sum(nil)
|
Gli SHA-1 sono generalmente stampati in formato esadecimale (ad esempio nei commit di git). Utilizza ‘%x’ per stampare il valore in esadecimale. |
fmt.Println(s)
fmt.Printf("%x\n", bs)
}
|
Eseguendo il programma si nota che viene calcolato l’hash della funzione e stampato in esadecimale a schermo |
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94
|
È possibile calcolare altre funzioni hash in un modo
molto simile. Ad esempio per calcolare l’MD5 è
sufficiente importare |
|
Nota che se necessiti di funzioni hash che siano sicure dal punto di vista crittografico, ti consigliamo di approfondire il tema dello hash strength! |
Prossimo esempio: Codifica Base64.