golang基礎學習-base64使用

在近期的項目開發中對圖片進行base64編碼,簡單使用了golang的base64包。golang

1.使用方法

1.1 引入包

import "encoding/base64"bash

1.2 base64使用

這裏全部的例子都是官網上的範例;
code:函數

msg := "Hello, 世界"
encoded := base64.StdEncoding.EncodeToString([]byte(msg))
fmt.Println(encoded)
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
    fmt.Println("decode error:", err)
    return
}
fmt.Println(string(decoded))

Output:編碼

SGVsbG8sIOS4lueVjA==
Hello, 世界

2. 包詳解

2.1包詳解

bash64包詳解
clipboard.png加密

上面途中的Constants:spa

const (
    StdPadding rune = '=' // Standard padding character
    NoPadding  rune = -1  // No padding
)

上面途中的Variables:3d

var RawStdEncoding = StdEncoding.WithPadding(NoPadding)
var RawURLEncoding = URLEncoding.WithPadding(NoPadding)
var StdEncoding = NewEncoding(encodeStd) 案例中使用的是該變量
var URLEncoding = NewEncoding(encodeURL)code

以2.2節案例中詳解:

base64加密:

  1. base64.StdEncoding 如上面變量所解釋,接收了「NewEncoding(encodeStd)」返回的結果「*Encoding」;
  2. 根據返回結果 再執行EncodeToString(str []byte) string 這個方法;
    在源碼中,EncodeToString 其實執行中的方法Encode(dst, src []byte),把結果string了一下。 固然秉着我省事的原則,我一直比較習慣用EncodeToString
  3. 打印「encoded := base64.StdEncoding.EncodeToString([]byte(msg))」後生成:
    SGVsbG8sIOS4lueVjA==

clipboard.png

base64解碼:

案例中,對於解碼對結果對於加密後的字符串運行:blog

decoded, err := base64.StdEncoding.DecodeString(encoded)
  1. 實際中DecodeString 實際是對的封裝func (enc *Encoding) Decode(dst, src []byte) (n int, err error),如圖可見:

clipboard.png

ps:本文只是簡單的使用base64包中一些函數。歡迎你們補充。圖片

相關文章
相關標籤/搜索