ag_tools/cmd/crc64.go

51 lines
1.2 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"
"strings"
"archgrid.xyz/ag/tools/types"
"archgrid.xyz/ag/toolsbox/hash/crc64"
"github.com/spf13/cobra"
)
var (
crc64Algorithm types.CRC64Algorithm = types.CRC64_ISO
crc64File bool
)
var crc64Cmd = &cobra.Command{
Use: "crc64",
Short: `CRC64校验`,
Long: `对给定的内容进行CRC64校验计算。`,
Args: cobra.MinimumNArgs(1),
Run: crc64Execute,
}
func crc64Execute(cmd *cobra.Command, args []string) {
var (
result []byte
err error
)
if crc64File {
result, err = crc64.SumFile(args[0], crc64Algorithm.IntoCRC64Mode())
} else {
result = crc64.CRC64([]byte(args[0]), crc64Algorithm.IntoCRC64Mode())
}
if err != nil {
fmt.Printf("计算CRC64校验值时发生错误%s\n", err)
return
}
var builder strings.Builder
for _, b := range result {
builder.WriteString(fmt.Sprintf(" %02X", b))
}
fmt.Printf("CRC64校验值%s\n", builder.String())
}
func init() {
crc64Cmd.PersistentFlags().VarP(&crc64Algorithm, "algorithm", "a", "CRC64算法可选值有iso, ecma缺省值为iso。")
crc64Cmd.PersistentFlags().BoolVarP(&crc64File, "file", "f", false, "从文件中读取内容")
rootCmd.AddCommand(crc64Cmd)
}