Links
Comment on page

Encoding

Na computação, encoding é o processo de transpor uma sequência de caracteres (letras, números, pontuações, caracteres especiais, símbolos) em um formato que seja eficiente para transmissão e storage.
O formato que comumente utilizamos é o Base64.
Funciona mais ou menos assim:
Code
1
package main
2
3
import (
4
b64 "encoding/base64"
5
"fmt"
6
)
7
8
func main() {
9
// aqui está a string a ser encodada
10
data := "abc123!?$*&()'-=@~"
11
12
// realizamos o encoding
13
sEnc := b64.StdEncoding.EncodeToString([]byte(data))
14
fmt.Println(sEnc)
15
16
// realizamos o decoding
17
sDec, _ := b64.StdEncoding.DecodeString(sEnc)
18
fmt.Println(string(sDec))
19
}
Output
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~
"Ok, mas para que utilizaremos isso?" Você deve estar se perguntado.
Imagine você tendo que transferir um trecho de código para outro computador.
Um exemplo como este:
Request com Query Escape em GO
1
package main
2
3
import (
4
"fmt"
5
"net/url"
6
)
7
8
func main() {
9
s := "this will be esc@ped!"
10
fmt.Println("http://example.com/say?message="+url.QueryEscape(s))
11
}
Temos novas linhas, caracteres especiais, etc...
Talvez alguma informação pode ser perdida no meio deste processo dependendo do conteúdo a ser transmitido.
Então transmitir este valor aqui é melhor não?
Base64
cGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImZtdCIKICAgICJuZXQvdXJsIgopCgpmdW5jIG1haW4oKSB7CiAgICBzIDo9ICJ0aGlzIHdpbGwgYmUgZXNjQHBlZCEiCiAgICBmbXQuUHJpbnRsbigiaHR0cDovL2V4YW1wbGUuY29tL3NheT9tZXNzYWdlPSIrdXJsLlF1ZXJ5RXNjYXBlKHMpKQp9
Você pode testar você mesmo com o IT-TOOLS.
Antes de partirmos para o próximo tópico, vale lembrar:
Encoding NÃO É CRIPTOGRAFIA