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

锦通  金牌会员 | 2024-11-23 17:12:35 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 882|帖子 882|积分 2646

媒介

近来经常用kubectl查看处理secret配置问题,因为secret的值都颠末了base64编码,以是必要解码。如果不嫌切换界面麻烦的话,可以切欣赏器用在线编解码工具。或者用linux一般自带的base64命令来编解码。但这个base64只继承文件输入和标准输入,有时候临时做个编解码要通过标准输入传参比较麻烦,好比如下命令,多少有点麻烦
  1. # 编码
  2. echo -en 'qwer' | base64
  3. # 解码
  4. echo -en 'cXdlcg==' | base64 -d
  5. # 编码多个字符串
  6. for i in qwer asdf;do echo -en "${i}" |base64;done
复制代码
示例代码
  1. package main
  2. import (
  3.         "encoding/base64"
  4.         "flag"
  5.         "fmt"
  6.         "os"
  7. )
  8. var (
  9.         isdecode bool
  10.         isseq    bool
  11. )
  12. var usage string = `sb64, a simple base64 command line tool
  13. Usage: sb64 [-d|-n] [string]`
  14. func Process(source string, isdec bool) string {
  15.         var rst string
  16.         if !isdec {
  17.                 rst = base64.URLEncoding.EncodeToString([]byte(source))
  18.         } else {
  19.                 decrst, err := base64.URLEncoding.DecodeString(source)
  20.                 if err != nil {
  21.                         rst = "DecodeError"
  22.                 } else {
  23.                         rst = string(decrst)
  24.                 }
  25.         }
  26.         return rst
  27. }
  28. func main() {
  29.         flag.BoolVar(&isdecode, "d", false, "decode mode")
  30.         flag.BoolVar(&isseq, "n", false, "print sequence number")
  31.         flag.Usage = func() {
  32.                 fmt.Println(usage)
  33.                 flag.PrintDefaults()
  34.         }
  35.         flag.Parse()
  36.         args := flag.Args()
  37.         if len(args) == 0 {
  38.                 fmt.Println("Error: number of arguments is 0")
  39.                 os.Exit(1)
  40.         }
  41.         for i, arg := range args {
  42.                 seq := i + 1
  43.                 if isseq {
  44.                         fmt.Printf("%3d: %s\n", seq, Process(arg, isdecode))
  45.                 } else {
  46.                         fmt.Printf("%s\n", Process(arg, isdecode))
  47.                 }
  48.         }
  49. }
复制代码
执行编译,将编译后的二进制文件放到PATH情况变量的可执行目录下
使用

编码
  1. $ sb64 hello world
  2. aGVsbG8=
  3. d29ybGQ=
复制代码
解码
  1. $ sb64 -d aGVsbG8= d29ybGQ=
  2. hello
  3. world
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表