Introduction
L'encodage et le décodage base64 est utilisé pour transmettre le contenu de fichiers ou d'images dans les courriels. L'idée de cette encodage est fort simple, il ne contient aucune compression ou transformation complexe mathématique. Dans les faits, on peut dire, qu'il s'agit d'une encodage en 6 bits plutôt que 8 bits pour obtenir un octet, le reste est à la manière d'un jeu de SokoBan, de vulgaire déplacements de bits. Voici la table utilisée pour les remplacements :
Valeur | Remplacement | Valeur | Remplacement | Valeur | Remplacement | Valeur | Remplacement |
---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w |
1 | B | 17 | R | 33 | h | 49 | x |
2 | C | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | l | 53 | 1 |
6 | G | 22 | W | 38 | m | 54 | 2 |
7 | H | 23 | X | 39 | n | 55 | 3 |
8 | I | 24 | Y | 40 | o | 56 | 4 |
9 | J | 25 | Z | 41 | p | 57 | 5 |
10 | K | 26 | a | 42 | q | 58 | 6 |
11 | L | 27 | b | 43 | r | 59 | 7 |
12 | M | 28 | c | 44 | s | 60 | 8 |
13 | N | 29 | d | 45 | t | 61 | 9 |
14 | O | 30 | e | 46 | u | 62 | + |
15 | P | 31 | f | 47 | v | 63 | / |
Exemple
Il existe des tonnes de méthodes sur Internet expliquant avec des techniques savantes et très proches de l'électronique, afin d'être des plus optimale possible et utilise des opérations spécialisés n'étant pas disponible dans tous les langages de programmation. La méthode suivante ce veut fort simple mais très lente, il n'utilise que des plus, des moins, des fois et des multiplications. Voici maintenant l'exemple en langage de programmation Visual Basic .NET (VB .NET) :
- Module Module1
-
- Function Base64(value As Integer) As String
- Select Case value
- Case 0 To 25
- Return Convert.ToChar(65 + value)
- Case 26 To 51
- Return Convert.ToChar(97 + (value - 26))
- Case 52 To 61
- Return Convert.ToChar(48 + (value - 52))
- Case 62
- Return "+"
- Case 63
- Return "/"
- Case Else
- Return ""
- End Select
- End Function
-
- Function StringToBase64(S As String) As String
- Dim Result As String = ""
- Dim I As Integer
- For I = 1 To Len(S) Step 3
- Dim Low = (Asc(Mid(S, I, 1)) Mod 4) * 16
- Result = Result & Base64((Asc(Mid(S, I, 1)) \ 4))
- If Len(S) - I + 1 = 1 Then
- Result = Result & Base64(Low)
- Else
- Result = Result & Base64(Low + (Asc(Mid(S, I + 1, 1)) \ 16))
- End If
- If Len(S) - I + 1 > 1 Then
- Result = Result & Base64((((Asc(Mid(S, I + 1, 1)) Mod 16) * 4) + (Asc(Mid(S, I + 2, 1)) \ 64)))
- If Len(S) - I + 1 > 2 Then
- Result = Result & Base64((Asc(Mid(S, I + 2, 1)) Mod 64))
- Else
- Result = Result & "="
- End If
- Else
- Result = Result & "=="
- End If
- Next
- Return Result
- End Function
-
- Sub Main()
- Console.WriteLine("Inside Gladir.com = " & Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("Gladir.com")))
- Console.WriteLine("Manual Gladir.com = " & StringToBase64("Gladir.com"))
- End Sub
-
- End Module
on obtiendra le résultat suivant :
Inside Gladir.com = R2xhZGlyLmNvbQ==Manual Gladir.com = R2xhZGlyLmNvbQ==
Voir également
Langage de programmation - C pour Linux - Référence procédures et fonctions - «BIO_F_BASE64»
Langage de programmation - C pour Linux - Référence procédures et fonctions - «GNUTLS_PEM_BASE64_DECODE»
Langage de programmation - C pour Linux - Référence procédures et fonctions - «SC_BASE64_DECODE»
Langage de programmation - C# (C Sharp) - Référence des méthodes - Convert.ToBase64CharArray
Langage de programmation - C# (C Sharp) - Référence des méthodes - Convert.ToBase64String
Langage de programmation - PHP - Référence de procédures et fonctions - «BASE64_DECODE»
Langage de programmation - PHP - Référence de procédures et fonctions - «BASE64_ENCODE»
Langage de programmation - Python - Référence des modules - base64
Langage de programmation - Visual Basic .NET (VB .NET) - Référence de classes - Convert.ToBase64CharArray
Langage de programmation - Visual Basic .NET (VB .NET) - Référence de classes - Convert.ToBase64String