base64 est un encodage qui permet d'utiliser seulement 64 caractères, et de passer sans problème les système de messagerie les plus archaïque sur 7 bits.
Par exemple voici un fichier reçu par email, il est encodé en base64 :
eJ8+IjsSAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy
b3NvZnQgTWFpbC5Ob3RlADEIAQ2ABAACAAAAAgACAAEGgAMADgAAANQHBwAHABQAOAAAAAMAOAEB
A5AGAJwHAAAmAAAACwACAAEAAAALACMAAAAAAAMAJgAAAAAACwApAAAAAAADADYAAAAAAB4AcAAB
AAAADQAAAFZYIGNvbnRhY3QgOgAAAAACAXEAAQAAABYAAAABxGRULMeuzNGaHYZMK6hAIlESJCL/
AAACAR0MAQAAABYAAABTTVRQOlJBWURFTkBSQVlERU4uQ0gAAAALAAEOAAAAAEAABg4AoCELVGTE
AQIBCg4BAAAAGAAAAAAAAACQoIPUeUIQQpD1Xhu0XwcIwoAAAAMAFA4AAAAACwAfDgEAAAACAQkQ
AQAAAIsDAACHAwAANwUAAExaRnXHVdPLAwAKAHJjcGcxMjUWMgD4C2BuDhAwMzNPAfcCpANjAgBj
aArAc/BldDAgB20CgwBQA9Q3EMkHEwKAfQqACMggO9UJbzAVP2UOMDUWag4g/jgKIxhxFmMXgQm0
GXIXRp0UUyoJsAnwBJBhdAWxGlIN4GgZURFQNS40gDAuMTEuMjIPQEkCgFx2CJB3awuAZNo0DGBj
AFALA2MAQQ8CNwHQGYELtDQGAQpAdCEAIEVzdC1jZSCycQpQIHYIYAQgcAhgcHZleiAHgAJAFVAg
tyCABCAbUHcEIAIgbAuADGU/BdAEkGNpIGLsZWEd8AhgcCAgCqIKhFUKgEcJ0XQLgHgkNFLgQVlE
RU4kOgyAA2AGdwswIeBnYXBoNHsZkCHgYgsgACAKICghZPMMMCgSdzUDMCf0KMQou7EKsGRkbCfD
KvJyK0clDvAzLAZyMwqBY2x/IXAAIAdAAOAtcB6ACrB0Ox3QLhFiLlEskCCAbGzweDkzNgFACwML
gAkyTHNiD0ABQHNhMKEgfkILcAQQIJABACEwBRB4FyIQHAAhkFImEFQtQQAtU1dJVENIICooCQBj
G4BpAiAgc/p1MWR1IaAbgAZxL0AhMgcFwAEABCBMQU4tUPcKwCUwB5ApLyMAECcgCvRBMIpEXCdl
OAQgbEUgkDEEkCBhbzhAZtZiBUAB0DAfsHUbUCOAPzFcMbEzdweQBUAx4GV2HQpQOh6wIuE8gyAt
IIJQNcFFVCBGRzLwfDI2HDEfoCFAACA4wDDeLzChMUARID2gKzmAMhCfMKE/FQBwI2AJ8C9uIVIj
I7A9sHIuIC+gLi38LS9BYheQQcE81j3SHICCMAXwV2ViLU0AcFphGzBkPkE/yVA+glNdA/B0EOBA
b0FxMUGoMf8nwEJpPVU90Q4gMRFD5g4grz51PwZFj0aYM0dIMUJYJkU78QpAcyE8iVMn/QMReTkA
NXMgsSBQM8EEIP87GjR6CGBP/TTAEOADAFBC+iADEWYjsAVANMA4oCegbwIgOOEl1DNQVC9AQYAw
TDc5HFAcgCA4HEE33zZwJEceYgHiNPFkGvIO8AZkC4AgUHtIWVBFAFJMSU5LICJ3vVnQLhVQAjA/
MEtDLhDg3iIUQAHxWEAREGxZAAxg0wlQHoAyIFnfaBRAHTD/HoIfVgMwV8Eesw9CEpQMAQskQxRR
AGBgAAMA3j+vbwAAAwAJWQMAAAADAEBlAAAAAAsAAYAIIAYAAAAAAMAAAAAAAABGAAAAAAOFAAAA
AAAAAwADgAggBgAAAAAAwAAAAAAAAEYAAAAAEIUAAAAAAAADAAeACCAGAAAAAADAAAAAAAAARgAA
AABShQAA45ABAB4ACYAIIAYAAAAAAMAAAAAAAABGAAAAAFSFAAABAAAABQAAADEwLjAAAAAACwAN
gAggBgAAAAAAwAAAAAAAAEYAAAAAgoUAAAAAAAALADqACCAGAAAAAADAAAAAAAAARgAAAAAOhQAA
AAAAAAMAPYAIIAYAAAAAAMAAAAAAAABGAAAAABiFAAAAAAAACwBSgAggBgAAAAAAwAAAAAAAAEYA
AAAABoUAAAAAAAADAFOACCAGAAAAAADAAAAAAAAARgAAAAABhQAAAAAAAAIB+A8BAAAAEAAAAJCg
g9R5QhBCkPVeG7RfBwgCAfoPAQAAABAAAACQoIPUeUIQQpD1Xhu0XwcIAgH7DwEAAACjAAAAAAAA
ADihuxAF5RAaobsIACsqVsIAAG1zcHN0LmRsbAAAAAAATklUQfm/uAEAqgA32W4AAABDOlxEb2N1
bWVudHMgYW5kIFNldHRpbmdzXFJBWURFTi5SQVlERU4tTUFDSElORVxMb2NhbCBTZXR0aW5nc1xB
cHBsaWNhdGlvbiBEYXRhXE1pY3Jvc29mdFxPdXRsb29rXG91dGxvb2sucHN0AAADAP4PBQAAAAMA
DTT9NwIAAgEUNAEAAAAQAAAATklUQfm/uAEAqgA32W4AAAIBfwABAAAAMQAAADAwMDAwMDAwOTBB
MDgzRDQ3OTQyMTA0MjkwRjU1RTFCQjQ1RjA3MDg2NDM1MjYwMAAAAAADAAYQ7vEWNwMABxAPAgAA
AwAQEAAAAAADABEQAAAAAB4ACBABAAAAZQAAAFNBTFVURVNULUNFUVVFVk9VU1BPVVZFWk1FVFRS
RUNFU05FV1NPTkxJTkU/TUVSQ0lCRUFVQ09VUEdSRUVUSU5YUkFZREVOQkFJU1NFREVQUklYQ0hF
WlJFTlQtQS1TV0lUQ0gAAAAAocg=
|
Voici en gros comment ca fonctionne :
1) tu prends 24 bits (3 octets)
2) tu lis 6 bits (reste 18 bits) comme une valeur entière
3) tu fais correspondre un caractère ASCII à cette valeur
4) tu lis les 6 bits suivants (reste 12 bits)
5) tu fais correspondre un caractère ASCII à cette valeur
6) tu lis les 6 bits suivants (reste 6 bits)
7) tu fais correspondre un caractère ASCII à cette valeur
8) tu lis les 6 bits suivants
9) tu fais correspondre un caractère ASCII à cette valeur
Tu regroupe les résultats de point 3, 5, 7 et 9 ce qui te donne 4 octets ou 32 bits. Ton fichier a gonflé de 33% en passant par email... ce qui n'est pas le cas avec HTTP ou FTP qui sont des protocoels qui permettent de transférer directement des données binaires.
Pour avoir 64 caractères il te faut 6 bits (2^6 = 64, lis le ^ comme "puissance" )
Les valeurs en fonction des 6 bits que tu lis de la table de remplacement des caractères sont les suivantes :
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 = / |
Prenons un exemple, j'ai un fichier de 3 octets qui contient ces données : 00110000'11011000'10001010
Je lis les 6 premiers bits (tu peux utiliser la caculatrice de Windows pour convertir) :
001100 = 12 = M
Puis les 6 suivants :
001101 = 13 = N
Les 6 suivants :
100010 = 34 = i
Les 6 derniers :
001010 = 10 = K
Le fichier ci-dessus encodé en base64 est donc : MNiK
Evidemment quand tu reçois un fichier par email tu appliques la méthodes inverses pour le décoder.
Message édité par Requin le 12-07-2004 à 20:11:25