package main import ( "crypto/sha256" "crypto/sha512" "flag" "fmt" "os" ) // 练习 4.2: 编写一个程序,默认情况下打印标准输入的SHA256编码, // 并支持通过命令行flag定制,输出SHA384或SHA512哈希算法。 func main() { var shaflag = flag.Int("sha", 256, "sha选择") var str = flag.String("s", "default", "需要被加密的字符串") flag.Parse() fmt.Println(*shaflag, *str) sha := func() []byte { if *shaflag == 256 { s := sha256.Sum256([]byte(*str)) res := make([]byte, len(s)) copy(res, s[:]) return res } else if *shaflag == 384 { s := sha512.Sum384([]byte(*str)) res := make([]byte, len(s)) copy(res, s[:]) return res } else if *shaflag == 512 { s := sha512.Sum512([]byte(*str)) res := make([]byte, len(s)) copy(res, s[:]) return res } else { fmt.Println("参数错误,请输入256,384,512") os.Exit(0) } return nil } fmt.Printf("%T \n%[1]x \n", sha()) }