Hogyan működik a Base64 kódolás

Tartalomjegyzék:

Hogyan működik a Base64 kódolás
Hogyan működik a Base64 kódolás
Anonim

A Base64 kódolás a bináris adatok ASCII karakterlánc-formátummá konvertálásának folyamata azáltal, hogy ezeket a bináris adatokat 6 bites karakterreprezentációvá alakítja át. A Base64 kódolási módszert akkor használják, amikor bináris adatokat, például képeket vagy videót továbbítanak olyan rendszereken, amelyeket úgy terveztek, hogy egyszerű szöveges (ASCII) formátumban továbbítsanak adatokat.

Miért használnak Base64 kódolást?

A Base64 kódolás iránti igény azokból a problémákból adódik, amelyek akkor jelentkeznek, amikor a médiát nyers bináris formátumban továbbítják szöveges rendszerekhez.

Mivel a szöveges rendszerek (például az e-mail) a bináris adatokat karakterek széles skálájaként értelmezik, beleértve a speciális parancskaraktereket is, az adathordozóra továbbított bináris adatok nagy részét ezek a rendszerek rosszul értelmezik, és elvesznek vagy megsérülnek. az átviteli folyamat.

Image
Image

Az ilyen típusú bináris adatok kódolásának egyik módja az ilyen átviteli problémák elkerülése érdekében, ha egyszerű ASCII-szövegként küldik el őket Base64 kódolású formátumban. Ez az egyik olyan technika, amelyet a MIME szabvány használ az egyszerű szövegen kívüli adatok küldésére.

Sok programozási nyelv, mint például a PHP és a Javascript, tartalmaz Base64 kódolási és dekódoló funkciókat a Base64 kódolással továbbított adatok értelmezéséhez.

Base64 kódolási logika

A Base64 kódolás a bináris adatokat 6 bites, 3 teljes bájtos szegmensekre bontja, és ezeket nyomtatható karakterekként jeleníti meg az ASCII szabványban. Ez lényegében két lépésben történik.

Az első lépés a bináris karakterlánc 6 bites blokkokra bontása. A Base64 csak 6 bitet használ (ez 2^6=64 karakternek felel meg), hogy biztosítsa a kódolt adatok nyomtathatóságát és ember által olvashatóságát. Az ASCII-ben elérhető speciális karakterek egyike sem használatos.

A 64 karakter (innen a Base64 név) 10 számjegyből, 26 kisbetűből, 26 nagybetűből áll, valamint a pluszjelből (+) és a perjelből (/). Létezik egy 65. karakter is, amelyet padként ismerünk, ami az egyenlőségjel (=). Ez a karakter akkor használatos, ha a bináris adat utolsó szegmense nem tartalmaz teljes 6 bitet.

Base64 kódolási példa

Vegyünk például három ASCII-számot: 155, 162 és 233. Ez a három szám egy 100110111010001011101001 bináris adatfolyamot alkot. A bináris fájl, akárcsak egy kép, egy bináris adatfolyamot tartalmaz, amely tízezrek vagy nulla ezrekig fut. és egyesek.

A Base64 kódoló úgy indul, hogy a bináris adatfolyamot hat karakterből álló csoportokba bontja: 100110 111010 001011 101001. Ezen csoportosítások mindegyike 38, 58, 11 és 41.

A hat karakterből álló bináris adatfolyam a bináris (vagy 2-es) karaktereket decimális (10-es) karakterekké alakítja át úgy, hogy a bináris sorozatban 1-gyel képviselt értékeket négyzetre emeli a helyzeti négyzetével. Jobbról indulva balra haladva, és nullával kezdve, a bináris adatfolyam értékei 2^0, majd 2^1, majd 2^2, majd 2^3, majd 2^4, majd 2^5.

Íme egy másik módja annak, hogy megnézzük. Balról kezdve minden pozíció értéke 1, 2, 4, 8, 16 és 32. Ha a bináris számban 1 van a résben, akkor hozzáadja ezt az értéket; ha 0 van a nyílásban, akkor nincs. Az 100110 bináris karakterlánc 38-as decimális számmá konvertál: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

A Base64 kódolás ezt a bináris karakterláncot veszi fel, és 6 bites 38, 58, 11 és 41 értékekre bontja.

Végül ezeket a számokat a rendszer ASCII karakterekké alakítja a Base64 kódolási táblázat segítségével. A példa 6 bites értékei a m6Lp. ASCII-szekvenciát jelentik

A Base64 konverziós tábla használata:

  • 38 m
  • 58 a 6
  • 11 az L
  • 41 p

Ez a kétlépéses folyamat a teljes kódolt bináris karakterláncra vonatkozik.

Annak érdekében, hogy a kódolt adatok megfelelően kinyomtathatók legyenek, és ne haladják meg a levelezőszerver sorhossz-korlátját, újsor karaktereket szúr be, hogy a sorok hossza 76 karakter alatt maradjon. Az újsor karakterei a többi adathoz hasonlóan kódolva vannak.

A Base64 kódolás teljes célja, a 3 bájtos bináris szegmensek megőrzését szolgáló kitöltéstől a binárisok szöveggé alakításáig a Base64 tábla használatával, az átvitt bináris információ integritásának megőrzése.

Base64 kódolási táblázat

A következő táblázat a Base64 kódolásban használt mind a 64 karaktert lefordítja.

Base64 kódolási táblázat
Érték Char Érték Char Érték Char Érték Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 55 3
8 Én 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

A végjáték megoldása

A kódolási folyamat végén probléma adódhat. Ha az eredeti adatok mérete bájtban háromszoros, akkor minden jól működik. Ha nem, akkor üres bájtok lehetnek. A megfelelő kódoláshoz pontosan 3 bájt bináris adatra van szükség.

A megoldás az, hogy elegendő bájtot kell hozzáfűzni 0 értékkel egy 3 bájtos csoport létrehozásához. Két ilyen érték hozzáfűződik, ha az adatokhoz egy plusz bájt adatra van szükség, egyet két plusz bájthoz.

Természetesen ezek a mesterséges záró '0-k nem kódolhatók az alábbi kódolási táblázat segítségével. Ezeket egy 65. karakternek kell ábrázolnia. A Base64 kitöltési karakter az egyenlőségjel (=), és a kódolt adatok végén található.

Ajánlott: