43 lines
973 B
Go
43 lines
973 B
Go
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())
|
||
}
|