ag_tools/cmd/sha1.go

55 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package cmd
import (
"fmt"
"archgrid.xyz/ag/tools/types"
"archgrid.xyz/ag/toolsbox/hash/sha1"
"archgrid.xyz/ag/toolsbox/serialize/base64"
"archgrid.xyz/ag/toolsbox/serialize/hex"
"github.com/spf13/cobra"
)
var (
sha1File bool
sha1Result types.ResultEncoding = types.ResultInHex
)
var sha1Cmd = &cobra.Command{
Use: "sha1",
Short: "使用Sha1算法计算文件或者字符串的哈希值",
Long: `使用Sha1算法计算文件或者字符串的哈希值支持文件和字符串两种模式。文件模式使用 -f 参数,不使用 -f 参数时将使用字符串模式。`,
Args: cobra.MinimumNArgs(1),
Run: sha1HashExecute,
}
func sha1HashExecute(cmd *cobra.Command, args []string) {
var (
hashResult []byte
err error
)
if sha1File {
hashResult, err = sha1.SumFile(args[0])
} else {
hashResult = sha1.Sha1([]byte(args[0]))
}
if err != nil {
fmt.Printf("散列计算失败:%s\n", err)
return
}
switch sha1Result {
case types.ResultInBase64:
fmt.Printf("散列结果:%s\n", base64.ToBase64(hashResult))
case types.ResultInHex:
fallthrough
default:
fmt.Printf("散列结果:%s\n", hex.ToHex(hashResult))
}
}
func init() {
sha1Cmd.Flags().BoolVarP(&sha1File, "file", "f", false, "计算文件的Sha1哈希值。")
sha1Cmd.Flags().VarP(&sha1Result, "output", "o", "计算结果编码输出的格式可选Base64或者Hex编码默认使用Hex编码。")
rootCmd.AddCommand(sha1Cmd)
}