[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] [string]`
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
本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/18564859