blog
  • README
  • php
    • swoole
      • manageProcess + redis 实现 ppt 转 pdf 服务
      • 基于 swoole 的多进程消息同步微服务 -- (3)实现 swoole 多进程消息同步微服务
      • 基于 swoole 的多进程消息同步微服务 -- (2)阿里云日志拉取实现与数据 check
      • manageProcess - 用php+swoole实现多进程管理类
      • 基于 swoole 的多进程消息同步微服务 -- (1)需求介绍和系统架构设计
    • php 信号处理
  • golang
    • golang 学习篇1 --- 实现一个简单的base64加解密
  • fromChat
    • 发红包问题
Powered by GitBook
On this page
  1. golang

golang 学习篇1 --- 实现一个简单的base64加解密

PreviousgolangNextfromChat

Last updated 6 years ago

先说需求由来,最近一段时间经常在 上晃悠,看到不少人在发招聘的时候喜欢发一段看不懂的字符串,捣鼓捣鼓之后发现是 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

效果图如下,基本满意 :) 有误之处请读者斧正!

v2ex