Go语言实现SHA256或SHA512哈希算法

问题

编写一个程序,默认情况下打印标准输入的SHA256编码,并支持通过命令行flag定制,输出SHA384或SHA512哈希算法。

代码实现

代码如下

package main

import (
	"crypto/sha256"
	"crypto/sha512"
	"flag"
	"fmt"
	"strings"
)

var hashMethod = flag.String("s", "sha256", "请输入哈希版本") // s表示选项,sha256表示默认值,"请输入哈希版本"表示help提示

func printHash(flag string, str string) {
	switch flag { // 使用switch语句实现匹配输入值
	case "SHA256":
		fmt.Printf("%x\n", sha256.Sum256([]byte(str))) // %x表示16进制,使用a-f,%X也表示十六进制,使用A-F
		return
	case "SHA512":
		fmt.Printf("%x\n", sha512.Sum512([]byte(str)))
		return
	case "SHA384":
		fmt.Printf("%x\n", sha512.Sum384([]byte(str)))
		return
	}
}

func main() {
	flag.Parse()
	var i string
	fmt.Print("请输入要加密的字符串:")
	fmt.Scanln(&i)                             // 从标准输入取值赋值给i,修改i原始字符串
	printHash(strings.ToUpper(*hashMethod), i) // strings.ToUpper把传入的字符换成大写
}

运行效果

D:\Software\godata\src\1215>go run main.go -s sha256
请输入要加密的字符串:但行好事,莫问前程
c070b88de1c988857edae8d44b73af112cff3a3ce536baae415d06279cc989bc

 

你可能感兴趣的:(GO,go语言)