package main import "fmt" import "crypto/sha256" import "io" import "log" import "os" import "path/filepath" func walk(path string, info os.FileInfo, err error) error { if err != nil { log.Fatalln(err) return err } if info.IsDir() { return nil } else { h, err := sha256File(path) if err != nil { return err } fmt.Printf("SHA256 (%s) = %x\n", info.Name(), h) } return nil } func sha256File(path string) ([]byte, error) { f, err := os.Open(path) if err != nil { log.Fatalln(err) return nil, err } defer f.Close() h := sha256.New() io.Copy(h, f) return h.Sum(nil), nil } func main() { if len(os.Args) < 2 { log.Fatalln("Usage shadir file") } if err := filepath.Walk(os.Args[1], walk); err != nil { panic(err) } }