Digitális és informatikai

Base64 darabolva: miért nem mindig fűzhetők össze a külön kódolt részek?

A Base64 három bájtos csoportokkal dolgozik. Ha a bemenetet rossz helyen vágod ketté, a külön kódolt részek egyszerű összefűzése eltér a teljes adat egyben kódolt alakjától.

Dajka Gábor3 perc olvasás

Egy hárombetűs ellenpélda

Az ASCII „Man” három bájtja egyben kódolva TWFu. Ha „M” és „an” részekre bontjuk, külön-külön TQ== és YW4= lesz az eredmény. Egyszerű összefűzésük TQ==YW4=, ami nem a teljes adat szabályos, egyben kódolt Base64-alakja. A középre került kitöltőjelek a rész lezárását jelzik.

A három bájtos határ szerepe

Ha a nem utolsó rész bájthossza hárommal osztható, nincs szüksége kitöltésre. Például „ManMan” két „Man” részének kódja TWFu és TWFu, összefűzve TWFuTWFu. Ez megegyezik az egyben kódolt eredménnyel. A feltétel bájthosszra vonatkozik, nem feltétlenül a látható karakterek számára.

Két következetes megoldás

Önálló kódolt blokkokat saját határokkal tárolva mindegyiket külön dekódolhatod, majd a visszakapott bájtokat összefűzheted. Folyamatos kódolásnál a feldolgozó megőrzi a hiányos csoport bájtjait a következő részhez, és csak a végén zár kitöltéssel. A két formátumot a fogadó féllel egyeztetni kell.

Ellenőrzés kis példákkal

Próbálj 1, 2, 3 és 4 bájtos darabhatárokat, majd dekódolás után hasonlítsd össze a teljes bájtsorozatot az eredetivel. A hibás alak elfogadása dekóderenként eltérhet, ezért ne támaszkodj egy megengedő eszköz véletlen sikerére. Az RFC 4648 írja le a csoportosítást és kitöltést; az adatdarabolás protokollja ezen felül saját szerződést igényel.

Források

Tudáspróba

Válaszolj a három kérdésre, majd ellenőrizd a megoldókulcsot. Minden helyes válasz 1 pont.

1. Mi a Man egyben kódolt Base64-alakja?

  • A) YW4=
  • B) TWFu
  • C) TQ==YW4=

2. Melyik nem utolsó darabhossz ad kitöltés nélküli blokkot?

  • A) 2 bájt
  • B) 1 bájt
  • C) 3 bájt

3. Hogyan fűzhetők biztosan össze önálló kódolt blokkok?

  • A) Külön dekódolás után a bájtok összefűzésével
  • B) A külön blokkok közvetlen összefűzésével, darabhatártól függetlenül
  • C) Az egyenlőségjelek törlésével és a maradék kódok összefűzésével

Megoldókulcs és visszajelzés

1. B) TWFu A három ASCII-bájt egyetlen négykarakteres csoportot ad.

2. C) 3 bájt A teljes három bájtos csoporthoz nem kell egyenlőségjeles kitöltés.

3. A) Külön dekódolás után a bájtok összefűzésével A blokkok saját lezárását a külön dekódolás helyesen kezeli.

Mit jelent az eredmény?

  • 3 pont: mindhárom ellenőrzött összefüggést helyesen alkalmaztad. Változtass meg egy bemeneti adatot a példában, és számold újra az eredményt.
  • 1–2 pont: a hibás válaszokhoz tartozó magyarázat alapján vezesd végig újra az érintett számítási lépést.
  • 0 pont: olvasd el újra a cikk levezetését, majd próbálkozz a kérdésekkel a megoldókulcs nélkül.

Hiányzó válasszal a próba még nincs lezárva. Ez a rövid önellenőrzés kizárólag a cikkben bemutatott összefüggésekre vonatkozik.

További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás