Base64 en C# : codage et décodage de chaînes avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Base64 en C# : comment coder et décoder des chaînes sans prise de tête

\n\n

Avez-vous déjà été confronté à une situation où vous deviez transmettre des données binaires via un protocole textuel, envoyer une image en JSON ou enregistrer un hachage sous une forme lisible ? C'est là qu'intervient le Base64 — un format ancien, fiable et éprouvé qui transforme n'importe quels octets en texte sécurisé.

\n\n

La question "How do I encode and decode a base64 string?" est l'une des plus populaires sur Stack Overflow (des dizaines de milliers de vues). Et ce n'est pas pour rien : en C#, le travail avec Base64 semble simple, mais les pièges sont nombreux. Aujourd'hui, nous allons tout détailler de A à Z : des exemples de base aux cas réels en production.

\n\n

Qu'est-ce que le Base64 et pourquoi en a-t-on besoin ?

\n\n

Le Base64 est une méthode de représentation de données binaires (octets) sous forme de chaîne ASCII. L'alphabet se compose de 64 caractères : A-Z, a-z, 0-9, plus les symboles '+' et '/'. Un caractère '=' est souvent ajouté à la fin de la chaîne pour l'alignement.

\n\n

Où est-il utilisé :

\n
    \n
  • Transmission de données en JSON/XML — les données binaires ne peuvent pas être insérées directement, uniquement sous forme de chaîne
  • \n
  • Authentification — Basic Auth utilise Base64 pour coder le nom d'utilisateur et le mot de passe
  • \n
  • Stockage d'images en base de données — les petites images sont stockées directement dans la base sous forme Base64
  • \n
  • Pièces jointes d'email — le format MIME nécessite Base64 pour les fichiers binaires
  • \n
\n\n

En C#, c'est la classe System.Convert qui gère tout cela — votre outil principal pour travailler avec Base64.

\n\n

Comment coder une chaîne en Base64 sur C#

\n\n

Le scénario le plus courant : vous avez une chaîne ordinaire (par exemple, "Bonjour, le monde !"), et vous souhaitez obtenir sa représentation Base64.

\n\n

Voici comment faire :

\n\n
using System;\nusing System.Text;\n\nstring original = "Hello, World!";\nbyte[] bytes = Encoding.UTF8.GetBytes(original);\nstring base64 = Convert.ToBase64String(bytes);\n\nConsole.WriteLine(base64); // Sortie : SGVsbG8sIFdvcmxkIQ==
\n\n

Point important : Base64 fonctionne avec des octets, pas avec des chaînes. Nous convertissons donc d'abord la chaîne en tableau d'octets (en utilisant l'encodage UTF-8), puis nous encodons ces octets.

\n\n

Pourquoi UTF-8 et pas, disons, ASCII ? Parce que UTF-8 prend en charge tous les caractères Unicode, y compris le cyrillique, les idéogrammes et les emojis. Si vous utilisez ASCII pour des chaînes russes, les données seront perdues.

\n\n

Comment décoder une chaîne Base64 en chaîne normale

\n\n

Le processus inverse — le décodage — est symétrique :

\n\n
using System;\nusing System.Text;\n\nstring base64 = "SGVsbG8sIFdvcmxkIQ==";\nbyte[] bytes = Convert.FromBase64String(base64);\nstring decoded = Encoding.UTF8.GetString(bytes);\n\nConsole.WriteLine(decoded); // Sortie : Hello, World!
\n\n

Notez : si vous avez encodé la chaîne en UTF-8, vous devez également la décoder en UTF-8. Sinon, vous obtiendrez du charabia.

\n\n

Travail avec des données binaires (images, fichiers)

\n\n

Base64 ne se limite pas aux chaînes. Vous pouvez encoder n'importe quelles données binaires — par exemple, une image ou un PDF.

\n\n

Exemple : encoder un tableau d'octets en Base64

\n\n
byte[] imageBytes = File.ReadAllBytes("photo.jpg");\nstring base64Image = Convert.ToBase64String(imageBytes);\n\n// Vous pouvez maintenant enregistrer la chaîne en JSON ou l'envoyer via une API\nConsole.WriteLine($"Longueur de la chaîne Base64 : {base64Image.Length} caractères");
\n\n

Décoder en fichier :

\n\n
string base64Image = "..."; // votre chaîne\nbyte[] imageBytes = Convert.FromBase64String(base64Image);\nFile.WriteAllBytes("decoded_photo.jpg", imageBytes);
\n\n

Important : Base64 augmente la taille des données d'environ 33 %. Si vous avez une image de 1 Mo, après encodage, elle pèsera ~1,33 Mo sous forme de chaîne.

\n\n

Erreurs typiques et comment les éviter

\n\n

Même les développeurs expérimentés trébuchent parfois sur Base64. Voici les pièges les plus courants :

\n\n

Blogs

Book Recommendations