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
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 minden 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ék Bináris Karakter Érték Bináris Karakter Érték Bináris Karakter Érték Bináris Karakter 0 000000A 16 010000Q 32 100000g 48 110000w 1 000001B 17 010001R 33 100001h 49 110001x 2 000010C 18 010010S 34 100010i 50 110010y 3 000011D 19 010011T 35 100011j 51 110011z 4 000100E 20 010100U 36 100100k 52 1101000 5 000101F 21 010101V 37 100101l 53 1101011 6 000110G 22 010110W 38 100110m 54 1101102 7 000111H 23 010111X 39 100111n 55 1101113 8 001000I 24 011000Y 40 101000o 56 1110004 9 001001J 25 011001Z 41 101001p 57 1110015 10 001010K 26 011010a 42 101010q 58 1110106 11 001011L 27 011011b 43 101011r 59 1110117 12 001100M 28 011100c 44 101100s 60 1111008 13 001101N 29 011101d 45 101101t 61 1111019 14 001110O 30 011110e 46 101110u 62 111110+ 15 001111P 31 011111f 47 101111v 63 111111/padding =
Példák Az angol Man szó kódolása
Szöveg M a n ASCII kód 77 97 110 Bitminta 010011010110000101101110 Kódtábla indexe 19 22 5 46 Base64-kódolt T W F u
Ma szó kódolása Eredeti bemenetSzövegMaASCII kód77 (0x4d)97 (0x61)Bitminta010011010110000100Base64-kódoltKódtábla indexe19224PaddingKarakterekTWE=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: a kódolás két utolsó karaktere nem + és /, hanem - és _ a kód végén nincsenek hosszkitöltő egyenlőségjelek nincs sorokra tördelés
Kapcsolódó szócikkek UUENCODE SMTP MIME
További információk IETF RFC-4648: Base64 IETF RFC-4648: Base64URL Internetes Base64 kódoló Internetes Base64 kódoló javascript+html5
Kategória:Informatika