Base64 Encoding

Base64 Encoding->Base64 인코딩 #

// Go는 [base64 인코딩/디코딩(base64 encoding/decoding)](http://en.wikipedia.org/wiki/Base64)을 내장 기능으로 지원합니다.

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!?$*&()'-=@~