e ae galera quem mexe com informatica sempre se depara com texto codificado em base64 alguma vez na vida devido ela ser largamente usado para todos tipos de fins, o base64 em si nao é um criptografia pelo menos muitos nao considera ela sendo uma cripto e sim apenas um encode (no caso ela nao serve para proteger os dados so para evitar trucamento de bytes), o base64 codifica em blocos de texto de 32bits ou seja 4bytes por cada 3 bytes do texto puro entao no caso se tiver um texto por exemplo "kodonokami" ele vai codificar o "kod" gerando um bloco de 32bits depois "ono" outro bloco, "kam" outro, e por fim outro bloco com o "i", totalizando 4 blocos de 32bits cada (a29k b25v a2Ft aQo=), entao kodo como a gente codifica em base64?, entao vamos la para começar a gente separa 3 em 3 bytes para facilitar nosso texto que vamos codificar vai ser fts315 (meu antigo nick XD)
- Código:
-
fts 315
como texto todo separado podemos ir para o proximo passo que seria transformar cada byte em binario (voce pode usar um editor hexadecimal para descobrir seu codigo correspondente depois usar a calculadora do windows para converter de hex para bin)
- Código:
-
fts = 66 74 73
convertemos para binario (lembrando que deve ter 8bits entao o 0 a esquerda é importante)
- Código:
-
fts = 01100110 01110100 01110011
juntamos tudo gerando um bloco de 24bits
- Código:
-
011001100111010001110011
separamos 4 blocos com 6 bits cada
- Código:
-
011001 100111 010001 110011
convertemos para decimal
- Código:
-
25 39 17 51
agora vemos o numero equivalente na ordem da tabela
- Citação :
- 0=A
1=B
2=C
3=D
4=E
5=F
6=G
7=H
8=I
9=J
10=K
11=L
12=M
13=N
14=O
15=P
16=Q
17=R
18=S
19=T
20=U
21=V
22=W
23=X
24=Y
25=Z
26=a
27=b
28=c
29=d
30=e
31=f
32=g
33=h
34=i
35=j
36=k
37=l
38=m
39=n
40=o
41=p
42=q
43=r
44=s
45=t
46=u
47=v
48=w
49=x
50=y
51=z
52=0
53=1
54=2
55=3
56=4
57=5
58=6
59=7
60=8
61=9
62= +
63= /
no caso o codigo 25 39 17 51 seria equivalente ao caracteres
- Código:
-
ZnRz
no caso esse é os 3 primeiros bytes que é o fts agora fazemos o mesmo esquema para os 3 proximos byte que é o 315 (MzE1)
- Código:
-
fts315 = ZnRzMzE1
conferindo com um programa que codifica arquivo base64 aqui no linux podemos ver que gero o mesmo codigo b64
para decodificar fazemos o inverso pegamos 4bytes por vez
- Código:
-
ZnRz
convertemos o caracter para o codigo decimal equivalente na tabela
- Código:
-
25 39 17 51
transformamos em binario (lembrando que sao 6bits nesse caso completamos com 0 a esquerda)
- Código:
-
011001 100111 010001 110011
juntamos tudo gerando 24 bits
- Código:
-
011001100111010001110011
separamos 3 blocos de 8bits
- Código:
-
01100110 01110100 01110011
convertemos para hex para facilitar
- Código:
-
66 74 73
e para terminar usamos um editor hexadecimal para ver qual é o codigo equivalente ^^
- Código:
-
66 74 73 = fts
outra coisa que temos que saber no b64 que se nao tiver 3 bytes e sim apenas 2 ou 1 por exemplo se o texto for "ft" ficaria 1 byte faltando entao completamos os bits restante do bloco com 0 e o byte completo que falta colocamos igual
- Código:
-
ft = 66 74
66 74 = 01100110 01110100
0110011001110100
011001 100111 0100? ? (vish '-')
entao completamos aquele 3byte com 0 e no outro byte fica um =
- Código:
-
011001 100111 010000 =
o codigo base64 nesse caso é
- Código:
-
ZnQ=
bom galera essa é a teoria do base64, ate a proxima ^^
by kõdo no kami