package main import ( "fmt" "flag" "os" "log" "crypto/sha512" ) type Opts struct { Inputs []string } func parse_opts() Opts { var opts Opts flag.Parse() opts.Inputs = flag.Args() return opts } func to_hex(hash [sha512.Size]byte) string { result := "" for _, b := range hash { result += fmt.Sprintf("%x", b) } return result } func main() { opts := parse_opts() for _, fname := range opts.Inputs { in_data, err := os.ReadFile(fname) if err != nil { log.Fatal(err) } hash := sha512.Sum512(in_data) fmt.Println(to_hex(hash), fname) } }