Section courante

A propos

Section administrative du site

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) :

  1. Module Module1
  2.  
  3.     Function Base64(value As Integer) As String
  4.         Select Case value
  5.             Case 0 To 25
  6.                 Return Convert.ToChar(65 + value)
  7.             Case 26 To 51
  8.                 Return Convert.ToChar(97 + (value - 26))
  9.             Case 52 To 61
  10.                 Return Convert.ToChar(48 + (value - 52))
  11.             Case 62
  12.                 Return "+"
  13.             Case 63
  14.                 Return "/"
  15.             Case Else
  16.                 Return ""
  17.         End Select
  18.     End Function
  19.  
  20.     Function StringToBase64(S As String) As String
  21.         Dim Result As String = ""
  22.         Dim I As Integer
  23.         For I = 1 To Len(S) Step 3
  24.             Dim Low = (Asc(Mid(S, I, 1)) Mod 4) * 16
  25.             Result = Result & Base64((Asc(Mid(S, I, 1)) \ 4))
  26.             If Len(S) - I + 1 = 1 Then
  27.                 Result = Result & Base64(Low)
  28.             Else
  29.                 Result = Result & Base64(Low + (Asc(Mid(S, I + 1, 1)) \ 16))
  30.             End If
  31.             If Len(S) - I + 1 > 1 Then
  32.                 Result = Result & Base64((((Asc(Mid(S, I + 1, 1)) Mod 16) * 4) + (Asc(Mid(S, I + 2, 1)) \ 64)))
  33.                 If Len(S) - I + 1 > 2 Then
  34.                     Result = Result & Base64((Asc(Mid(S, I + 2, 1)) Mod 64))
  35.                 Else
  36.                     Result = Result & "="
  37.                 End If
  38.             Else
  39.                 Result = Result & "=="
  40.             End If
  41.         Next
  42.         Return Result
  43.     End Function
  44.  
  45.     Sub Main()
  46.         Console.WriteLine("Inside Gladir.com = " & Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("Gladir.com")))
  47.         Console.WriteLine("Manual Gladir.com = " & StringToBase64("Gladir.com"))
  48.     End Sub
  49.  
  50. 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

Dernière mise à jour: Mardi, le 14 juillet 2009