golang 学习篇1 --- 实现一个简单的base64加解密
先说需求由来,最近一段时间经常在 v2ex 上晃悠,看到不少人在发招聘的时候喜欢发一段看不懂的字符串,捣鼓捣鼓之后发现是 base64( emmmm~ 你老大你开心就好 ),于是就有了这篇自我学习的文章。 先说下简单的实现,php 代码两行搞定,代码见分晓不多解释:
$encodeStr = base64_encode("466730846");
$decodeStr = base64_decode($encodeStr);
因为我在 mac 下开发 php 程序走的都是虚拟机,总不能为了一个小 base64 开下虚拟机再跑个 php 吧;不过最近在学习 golang 语言还没东西练手,想着就用这门语言写个小程序,还能方便自己日常的使用,perfect! 先想下思路: 1、我需要完成字符串 base64 的加解密,我需要知道当前的字符串是需要加密还是解密的 --- type ; 2、当前需要加解密的字符串是什么 --- code ; 为了体现易(gao)用(da)性(shang),当然是是用命令行进行参数输入输出啦!思路理顺就可以开发,在那之前先罗列下需要知道的知识点: 1、可以用 flag 包解决获得命令行传参的需求,类似于 php 中的 getopt 函数,看下源码中对 flag.Int 和 flag.StringVar 两个函数的原型,顿时心里有底了; 2、base64.StdEncoding.EncodeToString 和 base64.StdEncoding.DecodeString 这两个函数可以实现字符串的 base64 加解密; 那么现在程序就简单了,我实现的源码如下方所示:
package main
import (
"encoding/base64"
"fmt"
"flag"
)
func main() {
codeType := flag.Int("type", 1, "please input your code type,0 means encode,else means decode")
var codeString string
flag.StringVar(&codeString, "code", "", "input string your want to encode or decode")
flag.Parse()
if codeString == "" {
fmt.Println("please input code")
return
}
if *codeType == 0 {
// encode
fmt.Printf("encode string is: %s n", base64.StdEncoding.EncodeToString([] byte(codeString)))
} else {
// decode
decodeString, err := base64.StdEncoding.DecodeString(codeString)
if err != nil {
println(err)
} else {
fmt.Printf("decode string is: %s n", string(decodeString))
}
}
}
go build v2ex-base64.go; mv ./v2ex-base64 /path/to/I/want; sudo ln -s /path/to/I/want/v2ex-base64 /usr/local/bin/base64
效果图如下,基本满意 :) 有误之处请读者斧正!
Last updated