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