Ugrás a tartalomhoz

Base64

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából

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

[szerkesztés]
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

[szerkeszté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

[szerkesztés]

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

Érték BinárisKarakter   Érték BinárisKarakter   Érték BinárisKarakter   Érték BinárisKarakter
0 000000A16 010000Q32 100000 g48 110000w
1 000001B17 010001R33 100001 h49 110001x
2 000010C18 010010S34 100010 i50 110010y
3 000011D19 010011T35 100011 j51 110011z
4 000100E20 010100U36 100100 k52 1101000
5 000101F21 010101V37 100101 l53 1101011
6 000110G22 010110W38 100110 m54 1101102
7 000111H23 010111X39 100111 n55 1101113
8 001000I24 011000Y40 101000o56 1110004
9 001001J25 011001Z41 101001p57 1110015
10 001010K26 011010a42 101010q58 1110106
11 001011L27 011011b43 101011r59 1110117
12 001100M28 011100c44 101100s60 1111008
13 001101N29 011101d45 101101t61 1111019
14 001110O30 011110e46 101110u62 111110+
15 001111P31 011111f47 101111v63 111111/
padding=

Példák

[szerkesztés]

Az angol Man szó kódolása

[szerkesztés]
Szöveg M a n
ASCII kód 77 97 110
Bitminta010011010110000101101110
Kódtábla indexe 19 22 5 46
Base64-kódolt T W F u

Ma szó kódolása

[szerkesztés]
Eredeti bemenet Szöveg M a
ASCII kód 77 (0x4d) 97 (0x61)
Bitminta 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0
Base64-kódolt Kódtábla indexe 19 22 4 Padding
Karakterek T W E =
Oktetek 84 (0x54) 87 (0x57) 69 (0x45) 61 (0x3D)

Az AbCd szó kódolása

[szerkesztés]

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

[szerkesztés]

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

[szerkesztés]

További információk

[szerkesztés]