Base64

A Base64 kódolás 64 karakterből álló ábécén alapuló tartalomkódolási forma, melynek segítségével bináris, illetve speciális karaktereket tartalmazó adatokból ASCII karaktersorozat állítható elő. Az ily módon kódolt adatok akár a karaktereket 7 biten ábrázoló rendszereken is könnyen átvihetők.

Működése

Base64-da

A base64 kódolás során a kódolandó adathalmazt először 3 bájtból álló egységekre bontjuk, majd ezt az egységet bináris formára (24 bitre) alakítjuk. A 24 bitet ezután 6 bites darabkákra kell felszabdalni, majd az így kapott, 6 biten ábrázolt számokat indexként használva kell kikeresni a kódtáblából a kódolt karaktert. Látható, hogy a kódolás révén minden három kódolatlan karakter négy kódolttá alakul. (Megjegyzés: nem szükséges, hogy a bemenet (bájtokban mért) hossza hárommal osztható legyen; ha az input hossza n, akkor az output hossza egészrész((4n+2)/3), amit rendszerint egyenlőségjelekkel egészítünk ki néggyel osztható hosszúságra.

Az egyes bithatosokat reprezentáló karakterek (64 db) az alábbiak: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

A kódolt szövegben előfordulhat még:

  • egyenlőségjel ('='), amellyel a kódolt szöveget szokás néggyel osztható hosszúságúra kiegészíteni
  • kocsi-vissza, a visszafejtésnél figyelmen kívül kell hagyni
  • soremelés, a visszafejtésnél figyelmen kívül kell hagyni

Elgondolás

A 64 karaktert úgy választották ki, hogy azok megtalálhatóak a legtöbb alap kódolási formában, valamint nyomtathatóak. Így vélhetően mindent rendszeren hiba nélkül tovább küldhető, például e-mailben, ami nem tradicionális 8 bites alapot használ.

A Base64 kódtábla

Ez az RFC 4648 §4-ben meghatározott Base64 ábécé.

ÉrtékBinárisKarakter ÉrtékBinárisKarakter ÉrtékBinárisKarakter ÉrtékBinárisKarakter
0000000A16010000Q32100000g48110000w
1000001B17010001R33100001h49110001x
2000010C18010010S34100010i50110010y
3000011D19010011T35100011j51110011z
4000100E20010100U36100100k521101000
5000101F21010101V37100101l531101011
6000110G22010110W38100110m541101102
7000111H23010111X39100111n551101113
8001000I24011000Y40101000o561110004
9001001J25011001Z41101001p571110015
10001010K26011010a42101010q581110106
11001011L27011011b43101011r591110117
12001100M28011100c44101100s601111008
13001101N29011101d45101101t611111019
14001110O30011110e46101110u62111110+
15001111P31011111f47101111v63111111/
padding=

Példák

Az angol Man szó kódolása

SzövegMan
ASCII kód7797110
Bitminta010011010110000101101110
Kódtábla indexe1922546
Base64-kódoltTWFu

Ma szó kódolása

Eredeti bemenetSzövegMa
ASCII kód77 (0x4d)97 (0x61)
Bitminta010011010110000100
Base64-kódoltKódtábla indexe19224Padding
KarakterekTWE=
Oktetek84 (0x54)87 (0x57)69 (0x45)61 (0x3D)

Az AbCd szó kódolása

Az AbCd szó karaktereinek ASCII kódjai (decimálisan): 65, 98, 67, 100. Ezek bináris formája: 01000001, 01100010, 01000011, 01100100. Az így kapott 32 bit hatos csoportokra bontva (kiegészítve nullákkal): 010000, 010110, 001001, 000011, 011001, 000000, melyek megadják a kódtáblabeli indexeket: 16, 22, 9, 3, 25, 0. Az egyes bithatosokhoz tartozó jelek a táblázat alapján: QWJDZA, kiegészítve néggyel osztható hosszra: QWJDZA==.

Egy változat: Base64URL

Ez a változat az alábbiakban különbözik a Base64-tól:

  1. a kódolás két utolsó karaktere nem + és /, hanem - és _
  2. a kód végén nincsenek hosszkitöltő egyenlőségjelek
  3. nincs sorokra tördelés

Kapcsolódó szócikkek

További információk