package cmd import ( "fmt" "archgrid.xyz/ag/toolsbox/encryption/spiral" "github.com/spf13/cobra" ) var ( spiralCompatible bool ) var spiralCmd = &cobra.Command{ Use: "spiral", Short: "螺旋随机密钥自解密算法工具", Long: `使用螺旋随机密钥自解密算法加密或解密数据,在使用的时候注意明文和密文中如果包含空格或特殊字符,需要使用双引号包裹起来。`, } var spiralEncodeCmd = &cobra.Command{ Use: "encode", Short: "使用螺旋随机密钥自解密算法加密", Args: cobra.MinimumNArgs(1), Run: spiralEncodeExecute, } var spiralDecodeCmd = &cobra.Command{ Use: "decode", Short: "使用螺旋随机密钥自解密算法解密", Args: cobra.MinimumNArgs(1), Run: spiralDecodeExecute, } func spiralEncodeExecute(cmd *cobra.Command, args []string) { var strength spiral.Strength if spiralCompatible { strength = spiral.Compatible } else { strength = spiral.Enhanced } encodedResult, err := spiral.Encrypt(args[0], strength) if err != nil { fmt.Printf("加密失败,%s\n", err) return } fmt.Printf("加密结果:%s\n", encodedResult) } func spiralDecodeExecute(cmd *cobra.Command, args []string) { var strength spiral.Strength if spiralCompatible { strength = spiral.Compatible } else { strength = spiral.Enhanced } decodedResult, err := spiral.Decrypt(args[0], strength) if err != nil { fmt.Printf("解密失败,%s\n", err) return } fmt.Printf("解密结果:%s\n", decodedResult) } func init() { spiralCmd.PersistentFlags().BoolVarP(&spiralCompatible, "compatible", "c", false, "兼容模式,兼容旧版本的螺旋随机密钥自解密算法") spiralCmd.AddCommand(spiralEncodeCmd, spiralDecodeCmd) rootCmd.AddCommand(spiralCmd) }