Goはbase64のエンコードとデコードをサポートしています。
この記事では、golangにおいてbase64エンコードとデコードのやり方を解説します。
エンコードとは何ですか?
エンコードとは符号化のことで、符号化とは、ある形式の情報を可逆的に別の形式に変換することです。
また、データをエンコードしたのと同じアルゴリズムを使って、データをデコード(復号化)することができます。
ちなみに暗号化と混同してはいけません。
暗号化はエンコードの一種で、キーを使用しないとデータが解読できないように行われるため、非常に安全です。
base64エンコーディング
base64エンコーディングでは、
A-Z, a-z, 0-9, +, /, =
を含む合計64文字のシンボルテーブルを使用し、これらのシンボルを含む文字列にデータをエンコードします。
base64エンコードに必要なインポート
Goのエンコーディングパッケージには、base64パッケージがあります。
ですから、まずそれをインポートする必要があります。
import "encoding/base64"
Golangでデータをbase64にエンコードする
文字列をbase64に変換するためには、まず文字列をバイトスライスに変換する必要があります。
以下は、単純な文字列をbase64に変換した例です。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
s := "a string"
se := base64.StdEncoding.EncodeToString([]byte(s))
fmt.Println(se) // YSBzdHJpbmc=
}
base64パッケージでデータをデコード
デコードは非常に簡単です。
プロセスは同じで、パッケージに含まれる標準的なデコーダを使って文字列をデコードします。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
s := "a string"
se := base64.StdEncoding.EncodeToString([]byte(s))
fmt.Println(se) // YSBzdHJpbmc=
sd, e := base64.StdEncoding.DecodeString(se)
if e != nil {
fmt.Println(e)
}
fmt.Println(string(sd)) // a string
}