锦通 发表于 2024-11-23 17:12:35

[golang]命令行base64编解码工具

媒介

近来经常用kubectl查看处理secret配置问题,因为secret的值都颠末了base64编码,以是必要解码。如果不嫌切换界面麻烦的话,可以切欣赏器用在线编解码工具。或者用linux一般自带的base64命令来编解码。但这个base64只继承文件输入和标准输入,有时候临时做个编解码要通过标准输入传参比较麻烦,好比如下命令,多少有点麻烦
# 编码
echo -en 'qwer' | base64
# 解码
echo -en 'cXdlcg==' | base64 -d

# 编码多个字符串
for i in qwer asdf;do echo -en "${i}" |base64;done示例代码

package main

import (
        "encoding/base64"
        "flag"
        "fmt"
        "os"
)

var (
        isdecode bool
        isseq    bool
)
var usage string = `sb64, a simple base64 command line tool
Usage: sb64 [-d|-n] `

func Process(source string, isdec bool) string {
        var rst string
        if !isdec {
                rst = base64.URLEncoding.EncodeToString([]byte(source))
        } else {
                decrst, err := base64.URLEncoding.DecodeString(source)
                if err != nil {
                        rst = "DecodeError"
                } else {
                        rst = string(decrst)
                }

        }
        return rst
}

func main() {
        flag.BoolVar(&isdecode, "d", false, "decode mode")
        flag.BoolVar(&isseq, "n", false, "print sequence number")
        flag.Usage = func() {
                fmt.Println(usage)
                flag.PrintDefaults()
        }
        flag.Parse()

        args := flag.Args()
        if len(args) == 0 {
                fmt.Println("Error: number of arguments is 0")
                os.Exit(1)
        }

        for i, arg := range args {
                seq := i + 1
                if isseq {
                        fmt.Printf("%3d: %s\n", seq, Process(arg, isdecode))
                } else {
                        fmt.Printf("%s\n", Process(arg, isdecode))
                }
        }

}执行编译,将编译后的二进制文件放到PATH情况变量的可执行目录下
使用

编码
$ sb64 hello world
aGVsbG8=
d29ybGQ=解码
$ sb64 -d aGVsbG8= d29ybGQ=
hello
world
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: [golang]命令行base64编解码工具