Base64

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Base64 is een manier om binaire code te converteren naar ASCII-tekens. De codering wordt onder meer gebruikt in e-mail om bijlagen te versturen (zie MIME), maar ook op andere manieren wordt het op internet gebruikt. De conversie naar ASCII is noodzakelijk omdat veel protocollen op internet gebouwd zijn op het gebruik van (7-bits) ASCII-tekens en niet van binaire code van 8 bits.

De inhoud van een binair bestand wordt vaak getoond in hexadecimale vorm, met 16 verschillende tekens (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E en F), waarbij elk teken 4 bits vertegenwoordigt. Base64 is een 6 bitscodering. Dat betekent dat er 2^6 = 64 verschillende tekens zijn, vandaar de naam base64. Base64 is daardoor korter dan een hexadecimale codering, het heeft ongeveer 133% van de lengte van 8 bitscodering, terwijl een hexadecimale codering twee keer zo lang is als de oorspronkelijke 8 bitscodering.

Het gemeenschappelijke voordeel van base64- en hexadecimale codering is dat alle tekens visueel onderscheidbaar zijn. Dat zijn niet alle tekens die onder de ASCII-codering vallen (zoals de eerste 33 ASCII-tekens (waar ook de spatie en de carriage return onder vallen)). Een base64-gecodeerd document zou kunnen worden uitgeprint op papier, om later weer te worden ingelezen naar de computer met behulp van OCR.

De gebruikte tekens zijn de tekens in deze base64-tekenreeks: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

Omzetten[bewerken]

Het met de hand omzetten van een 8 bittekenreeks naar base64 gaat als volgt:

  1. De tekens worden omgezet in het binair
  2. Er wordt steeds een groepje van zes bits genomen
  3. De groepjes bits worden omgezet in decimaal
  4. Per decimaal getal wordt het teken genomen dat op positie (n+1) in de eerder genoemde base64-tekenreeks staat. De getallen variëren van 0 tot en met 63.

Het komt niet altijd uit, aangezien het aantal bits een 6-voud moet zijn. Als dat niet het geval is, worden er, afhankelijk van het aantal benodigde extra bits, 2 of 4 nullen achter gezet. Als er 2 nullen zijn toegevoegd, wordt "=" achter het eindresultaat gezet, bij 4 nullen komt er "==" achter. Zo is de lengte van een base64-tekenreeks altijd een 6-voud.

Een voorbeeld met de tekenreeks "π ∈ ℝ", gecodeerd als UTF-8: 11001111 10000000 00100000 11100010 10001000 10001000 00100000 11100010 10000100 10011101

groeperen in groepjes van 6:

110011 111000 000000 100000 111000 101000 100010 001000 001000 001110 001010 000100 100111 01

toevoegen van vier nullen:

110011 111000 000000 100000 111000 101000 100010 001000 001000 001110 001010 000100 100111 010000

omzetten naar decimaal:

51 56 0 32 56 40 34 8 8 14 10 4 39 16

betreffende teken kiezen uit de base64-tekenreeks:

z 4 A g 4 o i I I O K E n Q

eindresultaat:

z4Ag4oiIIOKEnQ== (twee "="-tekens zijn toegevoegd, vanwege de vier nullen die eerder toegevoegd zijn).

Een computer zet de getallen niet eerst om in decimaal, omdat computers zelf met het binaire systeem werken.

Zie ook[bewerken]

  • Uuencode en BinHex, andere manieren om binaire code om te zetten tot ASCII.
  • Inline image, gebruik van base64 om een plaatje in HTML-code onder te brengen.

Externe links[bewerken]