Ce face encoding/base64.Encoding
Base64 transformă orice octeți (o imagine, o cheie, un text cu diacritice) într-un text format doar din 64 de caractere sigure: litere, cifre și două simboluri. Este folosit în e-mailuri, în URL-uri de tip data:, în antetul HTTP Authorization: Basic și în JSON Web Tokens. Rezultatul este cu aproximativ o treime mai lung decât datele originale. Base64 nu este criptare: oricine îl poate decoda.
Pachetul are patru codări gata făcute, de tip *base64.Encoding: StdEncoding (standard, cu +, / și completare cu =), URLEncoding (cu - și _, sigur în URL-uri și nume de fișiere) și variantele RawStdEncoding, RawURLEncoding, fără = la final. enc.EncodeToString(date) returnează textul codat.
Parametri
| Parametru | Descriere |
|---|---|
src |
Octeții de codat (un text se convertește cu []byte(s)). |
Ce returnează
Textul Base64.
Exemple
Exemplul 1: Cele patru codări
Octeții aleși produc + și / în codarea standard, ca să se vadă diferența față de varianta URL.
package main
import (
"encoding/base64"
"fmt"
)
func main() {
text := []byte("Iași?>>")
fmt.Println("Std: ", base64.StdEncoding.EncodeToString(text))
fmt.Println("URL: ", base64.URLEncoding.EncodeToString(text))
fmt.Println("RawStd:", base64.RawStdEncoding.EncodeToString(text))
fmt.Println("RawURL:", base64.RawURLEncoding.EncodeToString(text))
fmt.Println(len(text), "octeți ->", len(base64.StdEncoding.EncodeToString(text)), "caractere")
}
Rezultat
Std: SWHImWk/Pj4=
URL: SWHImWk_Pj4=
RawStd: SWHImWk/Pj4
RawURL: SWHImWk_Pj4
8 octeți -> 12 caractere
Exemplul 2: Antet Authorization: Basic
package main
import (
"encoding/base64"
"fmt"
"net/http"
)
func main() {
date := base64.StdEncoding.EncodeToString([]byte("ana:parola-secreta"))
fmt.Println("Authorization: Basic " + date)
req, _ := http.NewRequest("GET", "https://api.exemplu.ro/", nil)
req.SetBasicAuth("ana", "parola-secreta")
fmt.Println("SetBasicAuth: ", req.Header.Get("Authorization"))
}
Rezultat
Authorization: Basic YW5hOnBhcm9sYS1zZWNyZXRh
SetBasicAuth: Basic YW5hOnBhcm9sYS1zZWNyZXRh
Greșeli frecvente
- Folosești Base64 ca să „ascunzi” parole sau date personale: se decodează instant. Pentru secrete folosește criptare sau hash-uri de parole.
- Pui Base64 standard într-un URL:
+devine spațiu și/separă căi. FoloseșteURLEncodingsauRawURLEncoding.
Comenzi înrudite
encoding/base64.Encoding.DecodeString: Decodează un text Base64 înapoi în octeți; returnează eroare dacă textul nu e valid pentru codarea aleasă.encoding/hex.EncodeToString: Scrie octeții în hexazecimal (două cifre 0-9a-f pe octet) și înapoi; forma obișnuită pentru hash-uri și chei.crypto/sha256.Sum256: Calculează amprenta SHA-256 a unor date: 32 de octeți (64 de cifre hex) care se schimbă complet la orice modificare.