Go by Example: Base64 인코딩

Go는 base64 인코딩/디코딩(base64 encoding/decoding)을 내장 기능으로 지원합니다.

package main

다음 구문은 encoding/base64 패키지를 기본값인 base64 대신 b64라는 이름으로 임포트 합니다. 이는 공간을 조금 절약합니다.

import b64 "encoding/base64"
import "fmt"
func main() {

다음은 우리가 인코딩/디코딩할 문자열(string) 입니다.

	data := "abc123!?$*&()'-=@~"

Go는 표준과 URL 호환 base64 모두 지원합니다. 다음은 표준 인코더로 인코딩하는 방법입니다. 인코더는 []byte를 받으므로 string을 이 타입으로 캐스팅 해야합니다.

	sEnc := b64.StdEncoding.EncodeToString([]byte(data))
	fmt.Println(sEnc)

디코딩은 에러를 반환할 수도 있는데, 입력값이 올바론 형태인지 모를 경우 이를 통해 확인할 수 있습니다.

	sDec, _ := b64.StdEncoding.DecodeString(sEnc)
	fmt.Println(string(sDec))
	fmt.Println()

다음은 URL 호환 base64 포맷으로 인코딩/디코딩하는 예입니다.

	uEnc := b64.URLEncoding.EncodeToString([]byte(data))
	fmt.Println(uEnc)
	uDec, _ := b64.URLEncoding.DecodeString(uEnc)
	fmt.Println(string(uDec))
}

이 문자열은 표준과 URL base64 인코더를 사용하여 약간 다른 값으로 인코딩하지만, (후미가 + vs -) 둘 다 우리가 원하는 원래 문자열로 디코딩합니다.

$ go run base64-encoding.go
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~

다음 예제: 파일 읽기.