ho bisogno di utility per Windows che calcola sha256 checksum del file in modo che quando si scarica fedora posso verificare checksum da qui: https://fedoraproject.org/static/checksums/Fedora-18-i386-CHECKSUMCome calcolare sha256 checksum file in Go
utilità Microsoft da http://support.microsoft.com/kb/889768 fa solo MD5 e SHA1.
Non voglio utilizzare altri strumenti scaricabili non firmati e non disponibili da https o da fonti che non conosco, perché non ha senso scaricare codice non firmato su una connessione non crittografata o da fonte non attendibile per verificare la firma di un altro codice per considerarlo affidabile.
Fortunatamente google offre la possibilità di utilizzare https per tutti i download, così posso scaricare Go over secure connection e iniziare da lì.
Ecco un semplice codice che lo fa per un file di piccole dimensioni, ma non è molto buono per i file di grandi dimensioni perché non è lo streaming.
package main
import (
"io/ioutil"
"crypto/sha256"
"os"
"log"
"encoding/hex"
)
func main() {
hasher := sha256.New()
s, err := ioutil.ReadFile(os.Args[1])
hasher.Write(s)
if err != nil {
log.Fatal(err)
}
os.Stdout.WriteString(hex.EncodeToString(hasher.Sum(nil)))
}
Come fare per utilizzare gli stream in modo che funzioni su qualsiasi dimensione di file.